{"dataset": "java_comparative_obfuscation", "name": "Java transformations", "kind": "controlled", "samples": [{"task_id": "int-9776b372c9e2-SRC", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean validateOnly() {\n        return this.validateOnly;\n    }\n\n    /**\n     * Sets whether the request should be validated without altering the configs.\n     */\n    public AlterClientQuotasOptions validateOnly(boolean validateOnly) {\n        this.validateOnly = validateOnly;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": null, "level": 0, "line_count": 27, "local_path": "source-original/SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "order": 0, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-9776b372c9e2-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-618b36560567-I01", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n\n\n\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    \n\n\n    public boolean validateOnly() {\n        return this.validateOnly;\n    }\n\n    \n\n\n    public AlterClientQuotasOptions validateOnly(boolean validateOnly) {\n        this.validateOnly = validateOnly;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "ac94baaa8082dbc3f27d930fb555a5ba07df25e96d8e52273c9091eb49929699", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "remove-comments", "level": 1, "line_count": 27, "local_path": "comments/remove-comments/I01__apache-kafka__AlterClientQuotasOptions__36560567.java", "order": 1, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 276, "comments_removed": 3}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-618b36560567-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 2, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4d6d7fbcdfa6-I02", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean validate() {\n        return this.validateOnly;\n    }\n\n    /**\n     * Sets whether the request should be validated without altering the configs.\n     */\n    public AlterClientQuotasOptions validate(boolean validate) {\n        this.validateOnly = validate;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "5da1b6889ccd5082f5dcf0f37809c3d3f279d78c9372a6e68efb862c0855eaf0", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "shorten-identifiers", "level": 2, "line_count": 27, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__AlterClientQuotasOptions__7fbcdfa6.java", "order": 2, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 1, "identifiers_declared": 1, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-4d6d7fbcdfa6-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 3, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5d1ab10e5df2-I03", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean removeBuffer() {\n        return this.validateOnly;\n    }\n\n    /**\n     * Sets whether the request should be validated without altering the configs.\n     */\n    public AlterClientQuotasOptions removeBuffer(boolean remoteClient) {\n        this.validateOnly = remoteClient;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "f898a963c5624a935594ac9387310b77dfe1530e2f6ee848af66a92b375d1c5a", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "mislead-identifiers", "level": 3, "line_count": 27, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__AlterClientQuotasOptions__b10e5df2.java", "order": 3, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 1, "identifiers_declared": 1, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 1, "local_random_pool_selections": 1, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 1, "method_name_groups": 1, "method_random_pool_selections": 1, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-5d1ab10e5df2-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 4, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-07d815b1f713-I04", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean a() {\n        return this.validateOnly;\n    }\n\n    /**\n     * Sets whether the request should be validated without altering the configs.\n     */\n    public AlterClientQuotasOptions a(boolean a) {\n        this.validateOnly = a;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e1f3bfab811c2d4ac9a129c8396cd79291d9be69c3eee649fb9d0b8ec0a4d537", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "garble-identifiers", "level": 4, "line_count": 27, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__AlterClientQuotasOptions__15b1f713.java", "order": 4, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 1, "identifiers_declared": 1, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-07d815b1f713-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 5, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-de955002ba53-I05", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean validateOnly() {\n        return this.validateOnly;\n    }\n\n    /**\n     * Sets whether the request should be validated without altering the configs.\n     */\n    public AlterClientQuotasOptions validateOnly(boolean validateOnly) {\n        this.validateOnly = validateOnly;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "encode-integer-literals", "level": 5, "line_count": 27, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__AlterClientQuotasOptions__5002ba53.java", "order": 5, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-de955002ba53-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 6, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0a99e64b7b61-I06", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean validateOnly() {\n        return this.validateOnly;\n    }\n\n    /**\n     * Sets whether the request should be validated without altering the configs.\n     */\n    public AlterClientQuotasOptions validateOnly(boolean validateOnly) {\n        this.validateOnly = validateOnly;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "invert-conditions", "level": 6, "line_count": 27, "local_path": "expressions/invert-conditions/I06__apache-kafka__AlterClientQuotasOptions__e64b7b61.java", "order": 6, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-0a99e64b7b61-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 7, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ac3eecb79cb3-I07", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean validateOnly() {\nif (((0x6DA4 ^ 0x6DA4) != 0)) { throw new AssertionError(); }\n\n        return this.validateOnly;\n    }\n\n    /**\n     * Sets whether the request should be validated without altering the configs.\n     */\n    public AlterClientQuotasOptions validateOnly(boolean validateOnly) {\nif (((0x4951 ^ 0x4951) != 0)) { throw new AssertionError(); }\n\n        this.validateOnly = validateOnly;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "14b83538c6049c0242034dab01e8c644ab1dcdf0a889c73cdd4df7a94f2c7ddc", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "insert-dead-branches", "level": 7, "line_count": 31, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__AlterClientQuotasOptions__ecb79cb3.java", "order": 7, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 2}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-ac3eecb79cb3-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 8, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5ad25d8d6a64-I08", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean validateOnly() {\n        return this.validateOnly;\n    }\n\n    /**\n     * Sets whether the request should be validated without altering the configs.\n     */\n    public AlterClientQuotasOptions validateOnly(boolean validateOnly) {\n{\n  int totalScore = 240;\n  int numberOfScores = 3;\n  int averageScore = totalScore / numberOfScores;\n}\n\n        this.validateOnly = validateOnly;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "aa7fdedc897569275006eb641aa4d9b64741c3586420bea98e3c1abb84b721c1", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 33, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__AlterClientQuotasOptions__5d8d6a64.java", "order": 8, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 5, "readable_template_index": 5}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-5ad25d8d6a64-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 9, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6726a25b9b3a-I09", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean validateOnly() {\n        return this.validateOnly;\n    }\n\n    /**\n     * Sets whether the request should be validated without altering the configs.\n     */\n    public AlterClientQuotasOptions validateOnly(boolean validateOnly) {\n{int lI0O_8f7d4c2b=0x1A7C;boolean lI0O_80eeefca=true;do{lI0O_8f7d4c2b^=0x1A7C;lI0O_80eeefca=false;}while(lI0O_80eeefca);}\n\n        this.validateOnly = validateOnly;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "efb3658869ab3ed3001a5ff460129e616614eafeae844c05bae40aaf1784860a", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 29, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__AlterClientQuotasOptions__a25b9b3a.java", "order": 9, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 7}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-6726a25b9b3a-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 10, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5d3981601a3b-I10", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience; import java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false; /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean validateOnly() { return this.validateOnly;\n    } /**\n     * Sets whether the request should be validated without altering the configs.\n     */ public AlterClientQuotasOptions validateOnly(boolean validateOnly) {\n        this.validateOnly = validateOnly;\n        return this; }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "16ba510628fd4b530179e52f335e17b4980d98ae7ce070bb78fabac5c57485ac", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "partially-compact-layout", "level": 10, "line_count": 19, "local_path": "layout/partially-compact-layout/I10__apache-kafka__AlterClientQuotasOptions__81601a3b.java", "order": 10, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 16, "line_break_groups_removed": 6, "line_breaks_removed": 8, "whitespace_characters_removed": 26}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-5d3981601a3b-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 11, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-67cd974ca9f6-I11", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean validateOnly() {\n        return this.validateOnly;\n    }\n\n    /**\n     * Sets whether the request should be validated without altering the configs.\n     */\n    public AlterClientQuotasOptions validateOnly(boolean validateOnly) {\n        this.validateOnly = validateOnly;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 27, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__AlterClientQuotasOptions__974ca9f6.java", "order": 11, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-67cd974ca9f6-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 12, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-10ffd69ccc4e-I12", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean validateOnly() {\n        return this.validateOnly;\n    }\n\n    /**\n     * Sets whether the request should be validated without altering the configs.\n     */\n    public AlterClientQuotasOptions validateOnly(boolean validateOnly) {\n        this.validateOnly = validateOnly;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 27, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__AlterClientQuotasOptions__d69ccc4e.java", "order": 12, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-10ffd69ccc4e-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 13, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3addba0e0cd4-I13", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Collection;\n\n/**\n * Options for {@link Admin#alterClientQuotas(Collection, AlterClientQuotasOptions)}.\n */\n@InterfaceAudience.Public\npublic class AlterClientQuotasOptions extends AbstractOptions<AlterClientQuotasOptions> {\n\n    private boolean validateOnly = false;\n\n    /**\n     * Returns whether the request should be validated without altering the configs.\n     */\n    public boolean validateOnly() {\n        return this.validateOnly;\n    }\n\n    /**\n     * Sets whether the request should be validated without altering the configs.\n     */\n    public AlterClientQuotasOptions validateOnly(boolean validateOnly) {\n        this.validateOnly = validateOnly;\n        return this;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__AlterClientQuotasOptions__b372c9e2.java", "base_sample_id": "source-d980be3e86a4cfb0", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java", "interference": "lower-for-to-while", "level": 13, "line_count": 27, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__AlterClientQuotasOptions__ba0e0cd4.java", "order": 13, "original_content_sha256": "732321d60309ffa182d67a60b3dda996e51bcfc91d3e1781f0fe9c9cdf4a3093", "parent_variant_id": "int-9776b372c9e2-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterClientQuotasOptions.java#L24-L46", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "AlterClientQuotasOptions", "variant_id": "int-3addba0e0cd4-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 14, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a1e918026e1d-SRC", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> future) {\n        this.future = future;\n    }\n\n    /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> partitionResult(final TopicPartition partition) {\n        final KafkaFutureImpl<Void> result = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((topicPartitions, throwable) -> {\n            if (throwable != null) {\n                result.completeExceptionally(throwable);\n            } else if (!topicPartitions.containsKey(partition)) {\n                result.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + partition + \"\\\" was not attempted\"));\n            } else {\n                final ApiException exception = topicPartitions.get(partition);\n                if (exception == null) {\n                    result.complete(null);\n                } else {\n                    result.completeExceptionally(exception);\n                }\n            }\n        });\n\n        return result;\n    }\n\n    /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> all() {\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> partitionsFailed = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            for (ApiException exception : topicPartitionErrorsMap.values()) {\n                if (exception != null) {\n                    String message = exception.getMessage();\n                    if ((message != null) && !message.isEmpty()) {\n                        throw Errors.forException(exception).exception(message +\n                            \" Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    } else {\n                        throw Errors.forException(exception).exception(\n                            \"Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    }\n                }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": null, "level": 0, "line_count": 75, "local_path": "source-original/SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "order": 0, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-a1e918026e1d-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 15, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c7cc06b7bf44-I01", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n\n\n\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> future) {\n        this.future = future;\n    }\n\n    \n\n\n    public KafkaFuture<Void> partitionResult(final TopicPartition partition) {\n        final KafkaFutureImpl<Void> result = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((topicPartitions, throwable) -> {\n            if (throwable != null) {\n                result.completeExceptionally(throwable);\n            } else if (!topicPartitions.containsKey(partition)) {\n                result.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + partition + \"\\\" was not attempted\"));\n            } else {\n                final ApiException exception = topicPartitions.get(partition);\n                if (exception == null) {\n                    result.complete(null);\n                } else {\n                    result.completeExceptionally(exception);\n                }\n            }\n        });\n\n        return result;\n    }\n\n    \n\n\n\n    public KafkaFuture<Void> all() {\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> partitionsFailed = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            for (ApiException exception : topicPartitionErrorsMap.values()) {\n                if (exception != null) {\n                    String message = exception.getMessage();\n                    if ((message != null) && !message.isEmpty()) {\n                        throw Errors.forException(exception).exception(message +\n                            \" Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    } else {\n                        throw Errors.forException(exception).exception(\n                            \"Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    }\n                }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "1cbfea9bf5dc46695979758dfd8a7405ceaf9e97b1b104c4098ef172e5785365", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "remove-comments", "level": 1, "line_count": 75, "local_path": "comments/remove-comments/I01__apache-kafka__AlterShareGroupOffsetsResult__06b7bf44.java", "order": 1, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 342, "comments_removed": 3}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-c7cc06b7bf44-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 16, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-461304bfa06e-I02", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> fut) {\n        this.future = fut;\n    }\n\n    /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> partition(final TopicPartition par) {\n        final KafkaFutureImpl<Void> res = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((topic, thr) -> {\n            if (thr != null) {\n                res.completeExceptionally(thr);\n            } else if (!topic.containsKey(par)) {\n                res.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + par + \"\\\" was not attempted\"));\n            } else {\n                final ApiException exc = topic.get(par);\n                if (exc == null) {\n                    res.complete(null);\n                } else {\n                    res.completeExceptionally(exc);\n                }\n            }\n        });\n\n        return res;\n    }\n\n    /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> all() {\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> partitions = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            for (ApiException exc2 : topicPartitionErrorsMap.values()) {\n                if (exc2 != null) {\n                    String mes = exc2.getMessage();\n                    if ((mes != null) && !mes.isEmpty()) {\n                        throw Errors.forException(exc2).exception(mes +\n                            \" Failed altering group offsets for the following partitions: \" + partitions);\n                    } else {\n                        throw Errors.forException(exc2).exception(\n                            \"Failed altering group offsets for the following partitions: \" + partitions);\n                    }\n                }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "dfa4556c924fe64cd3e5a5f6e8ba2a24ada95d75f61213d4bd509b1195548f2e", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "shorten-identifiers", "level": 2, "line_count": 75, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__AlterShareGroupOffsetsResult__04bfa06e.java", "order": 2, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 24, "identifiers_declared": 9, "local_name_collisions_avoided": 1, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-461304bfa06e-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 17, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9b520d6924ad-I03", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> client) {\n        this.future = client;\n    }\n\n    /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> validateRequest(final TopicPartition localItem) {\n        final KafkaFutureImpl<Void> window = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((defaultBalance, reference) -> {\n            if (reference != null) {\n                window.completeExceptionally(reference);\n            } else if (!defaultBalance.containsKey(localItem)) {\n                window.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + localItem + \"\\\" was not attempted\"));\n            } else {\n                final ApiException localData = defaultBalance.get(localItem);\n                if (localData == null) {\n                    window.complete(null);\n                } else {\n                    window.completeExceptionally(localData);\n                }\n            }\n        });\n\n        return window;\n    }\n\n    /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> add() {\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> currentAddress = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            for (ApiException activeKey : topicPartitionErrorsMap.values()) {\n                if (activeKey != null) {\n                    String channel = activeKey.getMessage();\n                    if ((channel != null) && !channel.isEmpty()) {\n                        throw Errors.forException(activeKey).exception(channel +\n                            \" Failed altering group offsets for the following partitions: \" + currentAddress);\n                    } else {\n                        throw Errors.forException(activeKey).exception(\n                            \"Failed altering group offsets for the following partitions: \" + currentAddress);\n                    }\n                }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b0e9be2f04f3dbecf418f7479d5183f0dd7bf968e89730d45c77ec9874b31d91", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "mislead-identifiers", "level": 3, "line_count": 75, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__AlterShareGroupOffsetsResult__0d6924ad.java", "order": 3, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 24, "identifiers_declared": 9, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 7, "local_random_pool_selections": 9, "local_total_length_difference": 3, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 2, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-9b520d6924ad-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 18, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-47593bb8f7b8-I04", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> a) {\n        this.future = a;\n    }\n\n    /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> a(final TopicPartition b) {\n        final KafkaFutureImpl<Void> c = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((d, f) -> {\n            if (f != null) {\n                c.completeExceptionally(f);\n            } else if (!d.containsKey(b)) {\n                c.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + b + \"\\\" was not attempted\"));\n            } else {\n                final ApiException g = d.get(b);\n                if (g == null) {\n                    c.complete(null);\n                } else {\n                    c.completeExceptionally(g);\n                }\n            }\n        });\n\n        return c;\n    }\n\n    /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> b() {\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> h = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            for (ApiException i : topicPartitionErrorsMap.values()) {\n                if (i != null) {\n                    String j = i.getMessage();\n                    if ((j != null) && !j.isEmpty()) {\n                        throw Errors.forException(i).exception(j +\n                            \" Failed altering group offsets for the following partitions: \" + h);\n                    } else {\n                        throw Errors.forException(i).exception(\n                            \"Failed altering group offsets for the following partitions: \" + h);\n                    }\n                }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "2ab9832f7bc669223b96ea6354b3088684e633288ddab8fd6c250a8a5191defb", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "garble-identifiers", "level": 4, "line_count": 75, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__AlterShareGroupOffsetsResult__3bb8f7b8.java", "order": 4, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 24, "identifiers_declared": 9, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-47593bb8f7b8-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 19, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5b17f851a535-I05", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> future) {\n        this.future = future;\n    }\n\n    /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> partitionResult(final TopicPartition partition) {\n        final KafkaFutureImpl<Void> result = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((topicPartitions, throwable) -> {\n            if (throwable != null) {\n                result.completeExceptionally(throwable);\n            } else if (!topicPartitions.containsKey(partition)) {\n                result.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + partition + \"\\\" was not attempted\"));\n            } else {\n                final ApiException exception = topicPartitions.get(partition);\n                if (exception == null) {\n                    result.complete(null);\n                } else {\n                    result.completeExceptionally(exception);\n                }\n            }\n        });\n\n        return result;\n    }\n\n    /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> all() {\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> partitionsFailed = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            for (ApiException exception : topicPartitionErrorsMap.values()) {\n                if (exception != null) {\n                    String message = exception.getMessage();\n                    if ((message != null) && !message.isEmpty()) {\n                        throw Errors.forException(exception).exception(message +\n                            \" Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    } else {\n                        throw Errors.forException(exception).exception(\n                            \"Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    }\n                }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "encode-integer-literals", "level": 5, "line_count": 75, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__AlterShareGroupOffsetsResult__f851a535.java", "order": 5, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-5b17f851a535-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 20, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-51cd92747ff8-I06", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> future) {\n        this.future = future;\n    }\n\n    /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> partitionResult(final TopicPartition partition) {\n        final KafkaFutureImpl<Void> result = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((topicPartitions, throwable) -> {\n            if (!((throwable != null))) { if (!topicPartitions.containsKey(partition)) {\n                result.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + partition + \"\\\" was not attempted\"));\n            } else {\n                final ApiException exception = topicPartitions.get(partition);\n                if (exception == null) {\n                    result.complete(null);\n                } else {\n                    result.completeExceptionally(exception);\n                }\n            } } else {\n                result.completeExceptionally(throwable);\n            }\n        });\n\n        return result;\n    }\n\n    /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> all() {\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> partitionsFailed = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            for (ApiException exception : topicPartitionErrorsMap.values()) {\n                if (!((exception != null))) {} else {\n                    String message = exception.getMessage();\n                    if ((message != null) && !message.isEmpty()) {\n                        throw Errors.forException(exception).exception(message +\n                            \" Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    } else {\n                        throw Errors.forException(exception).exception(\n                            \"Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    }\n                }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "e1a9c1e0b69dbe8d5f85a2d519e1e00deacbf7c2f1c5f3d4e3cb3dc1e5159c7e", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "invert-conditions", "level": 6, "line_count": 75, "local_path": "expressions/invert-conditions/I06__apache-kafka__AlterShareGroupOffsetsResult__92747ff8.java", "order": 6, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-51cd92747ff8-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 21, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-132eea2b01f2-I07", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> future) {\nif (((0xCA25 ^ 0xCA25) != 0)) { throw new AssertionError(); }\n\n        this.future = future;\n    }\n\n    /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> partitionResult(final TopicPartition partition) {\nif (((0x473 ^ 0x473) != 0)) { throw new AssertionError(); }\n\n        final KafkaFutureImpl<Void> result = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((topicPartitions, throwable) -> {\n            if (throwable != null) {\n                result.completeExceptionally(throwable);\n            } else if (!topicPartitions.containsKey(partition)) {\n                result.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + partition + \"\\\" was not attempted\"));\n            } else {\n                final ApiException exception = topicPartitions.get(partition);\n                if (exception == null) {\n                    result.complete(null);\n                } else {\n                    result.completeExceptionally(exception);\n                }\n            }\n        });\n\n        return result;\n    }\n\n    /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> all() {\nif (((0x7A9D ^ 0x7A9D) != 0)) { throw new AssertionError(); }\n\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> partitionsFailed = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            for (ApiException exception : topicPartitionErrorsMap.values()) {\n                if (exception != null) {\n                    String message = exception.getMessage();\n                    if ((message != null) && !message.isEmpty()) {\n                        throw Errors.forException(exception).exception(message +\n                            \" Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    } else {\n                        throw Errors.forException(exception).exception(\n                            \"Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    }\n                }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "8e0f94f567ae322abf3e22b613a11572206323b49814ef9c247640532df137e3", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "insert-dead-branches", "level": 7, "line_count": 81, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__AlterShareGroupOffsetsResult__ea2b01f2.java", "order": 7, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 3}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-132eea2b01f2-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 22, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f60780c8f63e-I08", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> future) {\n        this.future = future;\n    }\n\n    /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> partitionResult(final TopicPartition partition) {\n{\n  int runningTotal = 0;\n  for (int currentNumber = 1; currentNumber <= 5; currentNumber++) {\n    runningTotal += currentNumber;\n  }\n}\n\n        final KafkaFutureImpl<Void> result = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((topicPartitions, throwable) -> {\n            if (throwable != null) {\n                result.completeExceptionally(throwable);\n            } else if (!topicPartitions.containsKey(partition)) {\n                result.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + partition + \"\\\" was not attempted\"));\n            } else {\n                final ApiException exception = topicPartitions.get(partition);\n                if (exception == null) {\n                    result.complete(null);\n                } else {\n                    result.completeExceptionally(exception);\n                }\n            }\n        });\n\n        return result;\n    }\n\n    /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> all() {\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> partitionsFailed = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            for (ApiException exception : topicPartitionErrorsMap.values()) {\n                if (exception != null) {\n                    String message = exception.getMessage();\n                    if ((message != null) && !message.isEmpty()) {\n                        throw Errors.forException(exception).exception(message +\n                            \" Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    } else {\n                        throw Errors.forException(exception).exception(\n                            \"Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    }\n                }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "84f9f2f1e13a9bcb00829a6672521cc1d32bc18937f6ba9ee6bc96c2d3aaccba", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 82, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__AlterShareGroupOffsetsResult__80c8f63e.java", "order": 8, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 0}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-f60780c8f63e-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 23, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9d644835380a-I09", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> future) {\n{int lI0O_5d670920=0x2EC8,lI0O_42b523b3=~lI0O_5d670920;lI0O_5d670920=(lI0O_5d670920&lI0O_42b523b3)|(lI0O_5d670920^lI0O_5d670920);lI0O_42b523b3^=lI0O_42b523b3;}\n\n        this.future = future;\n    }\n\n    /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> partitionResult(final TopicPartition partition) {\n        final KafkaFutureImpl<Void> result = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((topicPartitions, throwable) -> {\n            if (throwable != null) {\n                result.completeExceptionally(throwable);\n            } else if (!topicPartitions.containsKey(partition)) {\n                result.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + partition + \"\\\" was not attempted\"));\n            } else {\n                final ApiException exception = topicPartitions.get(partition);\n                if (exception == null) {\n                    result.complete(null);\n                } else {\n                    result.completeExceptionally(exception);\n                }\n            }\n        });\n\n        return result;\n    }\n\n    /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> all() {\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> partitionsFailed = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            for (ApiException exception : topicPartitionErrorsMap.values()) {\n                if (exception != null) {\n                    String message = exception.getMessage();\n                    if ((message != null) && !message.isEmpty()) {\n                        throw Errors.forException(exception).exception(message +\n                            \" Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    } else {\n                        throw Errors.forException(exception).exception(\n                            \"Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    }\n                }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "9501f3a339f1af2b80232a2aeb192ece61987d0690c97c6240ab79a7399f9bf4", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 77, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__AlterShareGroupOffsetsResult__4835380a.java", "order": 9, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 9}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-9d644835380a-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 24, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-38833eaf64c7-I10", "source": "package org.apache.kafka.clients.admin; import org.apache.kafka.common.KafkaFuture; import org.apache.kafka.common.TopicPartition; import org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl; import org.apache.kafka.common.protocol.Errors;\nimport java.util.List; import java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> future) { this.future = future; } /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> partitionResult(final TopicPartition partition) {\n        final KafkaFutureImpl<Void> result = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((topicPartitions, throwable) -> { if (throwable != null) {\n                result.completeExceptionally(throwable);\n            } else if (!topicPartitions.containsKey(partition)) { result.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + partition + \"\\\" was not attempted\"));\n            } else { final ApiException exception = topicPartitions.get(partition);\n                if (exception == null) { result.complete(null);\n                } else {\n                    result.completeExceptionally(exception);\n                }\n            }\n        });\n\n        return result;\n    } /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> all() { return this.future.thenApply(topicPartitionErrorsMap ->  { List<TopicPartition> partitionsFailed = topicPartitionErrorsMap.entrySet() .stream() .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey) .collect(Collectors.toList());\n            for (ApiException exception : topicPartitionErrorsMap.values()) {\n                if (exception != null) {\n                    String message = exception.getMessage(); if ((message != null) && !message.isEmpty()) { throw Errors.forException(exception).exception(message +\n                            \" Failed altering group offsets for the following partitions: \" + partitionsFailed); } else { throw Errors.forException(exception).exception(\n                            \"Failed altering group offsets for the following partitions: \" + partitionsFailed); }\n                } }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "3ecbe4a77fc04c6a870afe7d3e31ea27b598aca43aab8d20786d81ac9c1c6aa8", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "partially-compact-layout", "level": 10, "line_count": 49, "local_path": "layout/partially-compact-layout/I10__apache-kafka__AlterShareGroupOffsetsResult__3eaf64c7.java", "order": 10, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 60, "line_break_groups_removed": 24, "line_breaks_removed": 26, "whitespace_characters_removed": 274}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-38833eaf64c7-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 25, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-87ef55c3eb1f-I11", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> future) {\n        this.future = future;\n    }\n\n    /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> partitionResult(final TopicPartition partition) {\n        final KafkaFutureImpl<Void> result = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((topicPartitions, throwable) -> {\n            if (throwable != null) {\n                result.completeExceptionally(throwable);\n            } else if (!topicPartitions.containsKey(partition)) {\n                result.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + partition + \"\\\" was not attempted\"));\n            } else {\n                final ApiException exception = topicPartitions.get(partition);\n                if (exception == null) {\n                    result.complete(null);\n                } else {\n                    result.completeExceptionally(exception);\n                }\n            }\n        });\n\n        return result;\n    }\n\n    /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> all() {\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> partitionsFailed = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            for (ApiException exception : topicPartitionErrorsMap.values()) {\n                if (exception != null) {\n                    String message = exception.getMessage();\n                    if ((message != null) && !message.isEmpty()) {\n                        throw Errors.forException(exception).exception(message +\n                            \" Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    } else {\n                        throw Errors.forException(exception).exception(\n                            \"Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    }\n                }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 75, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__AlterShareGroupOffsetsResult__55c3eb1f.java", "order": 11, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-87ef55c3eb1f-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 26, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-582270de9a87-I12", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> future) {\n        this.future = future;\n    }\n\n    /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> partitionResult(final TopicPartition partition) {\n        final KafkaFutureImpl<Void> result = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((topicPartitions, throwable) -> {\n            if (throwable != null) {\n                result.completeExceptionally(throwable);\n            } else if (!topicPartitions.containsKey(partition)) {\n                result.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + partition + \"\\\" was not attempted\"));\n            } else {\n                final ApiException exception = topicPartitions.get(partition);\n                if (exception == null) {\n                    result.complete(null);\n                } else {\n                    result.completeExceptionally(exception);\n                }\n            }\n        });\n\n        return result;\n    }\n\n    /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> all() {\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> partitionsFailed = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            for (ApiException exception : topicPartitionErrorsMap.values()) {\n                if (exception != null) {\n                    String message = exception.getMessage();\n                    if ((message != null) && !message.isEmpty()) {\n                        throw Errors.forException(exception).exception(message +\n                            \" Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    } else {\n                        throw Errors.forException(exception).exception(\n                            \"Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    }\n                }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 75, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__AlterShareGroupOffsetsResult__70de9a87.java", "order": 12, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-582270de9a87-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 27, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a24776937e63-I13", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.KafkaFuture;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.errors.ApiException;\nimport org.apache.kafka.common.internals.KafkaFutureImpl;\nimport org.apache.kafka.common.protocol.Errors;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n/**\n * The result of the {@link Admin#alterShareGroupOffsets(String, Map, AlterShareGroupOffsetsOptions)} call.\n */\n@InterfaceAudience.Public\npublic class AlterShareGroupOffsetsResult {\n\n    private final KafkaFuture<Map<TopicPartition, ApiException>> future;\n\n    AlterShareGroupOffsetsResult(KafkaFuture<Map<TopicPartition, ApiException>> future) {\n        this.future = future;\n    }\n\n    /**\n     * Return a future which can be used to check the result for a given partition.\n     */\n    public KafkaFuture<Void> partitionResult(final TopicPartition partition) {\n        final KafkaFutureImpl<Void> result = new KafkaFutureImpl<>();\n\n        this.future.whenComplete((topicPartitions, throwable) -> {\n            if (throwable != null) {\n                result.completeExceptionally(throwable);\n            } else if (!topicPartitions.containsKey(partition)) {\n                result.completeExceptionally(new IllegalArgumentException(\n                    \"Alter offset for partition \\\"\" + partition + \"\\\" was not attempted\"));\n            } else {\n                final ApiException exception = topicPartitions.get(partition);\n                if (exception == null) {\n                    result.complete(null);\n                } else {\n                    result.completeExceptionally(exception);\n                }\n            }\n        });\n\n        return result;\n    }\n\n    /**\n     * Return a future which succeeds if all the alter offsets succeed.\n     * If not, the first topic error shall be returned.\n     */\n    public KafkaFuture<Void> all() {\n        return this.future.thenApply(topicPartitionErrorsMap ->  {\n            List<TopicPartition> partitionsFailed = topicPartitionErrorsMap.entrySet()\n                .stream()\n                .filter(e -> e.getValue() != null)\n                .map(Map.Entry::getKey)\n                .collect(Collectors.toList());\n            {\n              java.util.Iterator<?> loopIterator = (topicPartitionErrorsMap.values()).iterator();\n              while (loopIterator.hasNext()) {\n                ApiException exception = (ApiException) loopIterator.next();\n                if (exception != null) {\n                    String message = exception.getMessage();\n                    if ((message != null) && !message.isEmpty()) {\n                        throw Errors.forException(exception).exception(message +\n                            \" Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    } else {\n                        throw Errors.forException(exception).exception(\n                            \"Failed altering group offsets for the following partitions: \" + partitionsFailed);\n                    }\n                }\n              }\n            }\n            return null;\n        });\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__AlterShareGroupOffsetsResult__18026e1d.java", "base_sample_id": "source-d9937e63355015bf", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "f883def1f9a1beb22fa09788c1ee71e51dec69f9257f3c147788900553d71b37", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java", "interference": "lower-for-to-while", "level": 13, "line_count": 79, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__AlterShareGroupOffsetsResult__76937e63.java", "order": 13, "original_content_sha256": "011a5d7f73797583b8be1ef0ceb58b0af41cbd1cafce13c4b83d9f72cda94a3f", "parent_variant_id": "int-a1e918026e1d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/AlterShareGroupOffsetsResult.java#L31-L94", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 1, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "AlterShareGroupOffsetsResult", "variant_id": "int-a24776937e63-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 28, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-aabd54435597-SRC", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0),\n        UPGRADE(1),\n        SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3);\n\n        private final byte code;\n\n        UpgradeType(int code) {\n            this.code = (byte) code;\n        }\n\n        public byte code() {\n            return code;\n        }\n\n        public static UpgradeType fromCode(int code) {\n            if (code == 1) {\n                return UPGRADE;\n            } else if (code == 2) {\n                return SAFE_DOWNGRADE;\n            } else if (code == 3) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            }\n        }\n    }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short maxVersionLevel, final UpgradeType upgradeType) {\n        if (maxVersionLevel == 0 && upgradeType.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    maxVersionLevel));\n        }\n        if (maxVersionLevel < 0) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = maxVersionLevel;\n        this.upgradeType = upgradeType;\n    }\n\n    public short maxVersionLevel() {\n        return maxVersionLevel;\n    }\n\n    public UpgradeType upgradeType() {\n        return upgradeType;\n    }\n\n    @Override\n    public boolean equals(Object other) {\n        if (this == other) {\n            return true;\n        }\n\n        if (!(other instanceof FeatureUpdate)) {\n            return false;\n        }\n\n        final FeatureUpdate that = (FeatureUpdate) other;\n        return this.maxVersionLevel == that.maxVersionLevel && this.upgradeType.equals(that.upgradeType);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String toString() {\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": null, "level": 0, "line_count": 96, "local_path": "source-original/SRC__apache-kafka__FeatureUpdate__54435597.java", "order": 0, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-aabd54435597-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 183, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-85af80336a05-I01", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n\n\n\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0),\n        UPGRADE(1),\n        SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3);\n\n        private final byte code;\n\n        UpgradeType(int code) {\n            this.code = (byte) code;\n        }\n\n        public byte code() {\n            return code;\n        }\n\n        public static UpgradeType fromCode(int code) {\n            if (code == 1) {\n                return UPGRADE;\n            } else if (code == 2) {\n                return SAFE_DOWNGRADE;\n            } else if (code == 3) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            }\n        }\n    }\n\n    \n\n\n\n\n\n\n\n\n\n    public FeatureUpdate(final short maxVersionLevel, final UpgradeType upgradeType) {\n        if (maxVersionLevel == 0 && upgradeType.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    maxVersionLevel));\n        }\n        if (maxVersionLevel < 0) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = maxVersionLevel;\n        this.upgradeType = upgradeType;\n    }\n\n    public short maxVersionLevel() {\n        return maxVersionLevel;\n    }\n\n    public UpgradeType upgradeType() {\n        return upgradeType;\n    }\n\n    @Override\n    public boolean equals(Object other) {\n        if (this == other) {\n            return true;\n        }\n\n        if (!(other instanceof FeatureUpdate)) {\n            return false;\n        }\n\n        final FeatureUpdate that = (FeatureUpdate) other;\n        return this.maxVersionLevel == that.maxVersionLevel && this.upgradeType.equals(that.upgradeType);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String toString() {\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "7741f5fecff304b723dd0c06847092783a4fcf3ac57a46d4cfe3d899ec5de676", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "remove-comments", "level": 1, "line_count": 96, "local_path": "comments/remove-comments/I01__apache-kafka__FeatureUpdate__80336a05.java", "order": 1, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 849, "comments_removed": 2}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-85af80336a05-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 184, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a0b06f0cefdc-I02", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0),\n        UPGRADE(1),\n        SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3);\n\n        private final byte code;\n\n        UpgradeType(int cod) {\n            this.code = (byte) cod;\n        }\n\n        public byte cod() {\n            return code;\n        }\n\n        public static UpgradeType from(int cod2) {\n            if (cod2 == 1) {\n                return UPGRADE;\n            } else if (cod2 == 2) {\n                return SAFE_DOWNGRADE;\n            } else if (cod2 == 3) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            }\n        }\n    }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short max, final UpgradeType upgrade) {\n        if (max == 0 && upgrade.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    max));\n        }\n        if (max < 0) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = max;\n        this.upgradeType = upgrade;\n    }\n\n    public short max() {\n        return maxVersionLevel;\n    }\n\n    public UpgradeType upgrade() {\n        return upgradeType;\n    }\n\n    @Override\n    public boolean equ(Object oth) {\n        if (this == oth) {\n            return true;\n        }\n\n        if (!(oth instanceof FeatureUpdate)) {\n            return false;\n        }\n\n        final FeatureUpdate tha = (FeatureUpdate) oth;\n        return this.maxVersionLevel == tha.maxVersionLevel && this.upgradeType.equals(tha.upgradeType);\n    }\n\n    @Override\n    public int hash() {\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String to() {\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "d7725580e0e4b004f484e54519f3219f3def4e25e43d05cefcf641c7b6b29f3e", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "shorten-identifiers", "level": 2, "line_count": 96, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__FeatureUpdate__6f0cefdc.java", "order": 2, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 15, "identifiers_declared": 6, "local_name_collisions_avoided": 1, "method_calls_renamed": 0, "method_declarations_renamed": 7, "method_name_collisions_avoided": 0, "method_name_groups": 7}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-a0b06f0cefdc-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 185, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e137022379e0-I03", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0),\n        UPGRADE(1),\n        SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3);\n\n        private final byte code;\n\n        UpgradeType(int size) {\n            this.code = (byte) size;\n        }\n\n        public byte load() {\n            return code;\n        }\n\n        public static UpgradeType sendNode(int flag) {\n            if (flag == 1) {\n                return UPGRADE;\n            } else if (flag == 2) {\n                return SAFE_DOWNGRADE;\n            } else if (flag == 3) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            }\n        }\n    }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short defaultSession, final UpgradeType nextBalance) {\n        if (defaultSession == 0 && nextBalance.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    defaultSession));\n        }\n        if (defaultSession < 0) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = defaultSession;\n        this.upgradeType = nextBalance;\n    }\n\n    public short validateBalance() {\n        return maxVersionLevel;\n    }\n\n    public UpgradeType readBalance() {\n        return upgradeType;\n    }\n\n    @Override\n    public boolean submit(Object price) {\n        if (this == price) {\n            return true;\n        }\n\n        if (!(price instanceof FeatureUpdate)) {\n            return false;\n        }\n\n        final FeatureUpdate node = (FeatureUpdate) price;\n        return this.maxVersionLevel == node.maxVersionLevel && this.upgradeType.equals(node.upgradeType);\n    }\n\n    @Override\n    public int schedule() {\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String readUser() {\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7ca73bc9af0109dcabe4ae5156ba9b6825f376d1f4fefbdfe508e53ce178e6e0", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "mislead-identifiers", "level": 3, "line_count": 96, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__FeatureUpdate__022379e0.java", "order": 3, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 15, "identifiers_declared": 6, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 5, "local_random_pool_selections": 6, "local_total_length_difference": 1, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 7, "method_exact_length_matches": 7, "method_name_groups": 7, "method_random_pool_selections": 7, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-e137022379e0-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 186, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-88458df58090-I04", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0),\n        UPGRADE(1),\n        SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3);\n\n        private final byte code;\n\n        UpgradeType(int a) {\n            this.code = (byte) a;\n        }\n\n        public byte a() {\n            return code;\n        }\n\n        public static UpgradeType b(int b) {\n            if (b == 1) {\n                return UPGRADE;\n            } else if (b == 2) {\n                return SAFE_DOWNGRADE;\n            } else if (b == 3) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            }\n        }\n    }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short c, final UpgradeType d) {\n        if (c == 0 && d.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    c));\n        }\n        if (c < 0) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = c;\n        this.upgradeType = d;\n    }\n\n    public short a() {\n        return maxVersionLevel;\n    }\n\n    public UpgradeType b() {\n        return upgradeType;\n    }\n\n    @Override\n    public boolean c(Object e) {\n        if (this == e) {\n            return true;\n        }\n\n        if (!(e instanceof FeatureUpdate)) {\n            return false;\n        }\n\n        final FeatureUpdate f = (FeatureUpdate) e;\n        return this.maxVersionLevel == f.maxVersionLevel && this.upgradeType.equals(f.upgradeType);\n    }\n\n    @Override\n    public int d() {\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String e() {\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "3f68787d41c406274da2eb33a100b87bcf2e1e376c01043d8655b468fff1d90f", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "garble-identifiers", "level": 4, "line_count": 96, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__FeatureUpdate__8df58090.java", "order": 4, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 15, "identifiers_declared": 6, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 7, "method_name_collisions_avoided": 0, "method_name_groups": 7}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-88458df58090-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 187, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-911dbd2c6ab1-I05", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0x0),\n        UPGRADE(0x1),\n        SAFE_DOWNGRADE(0x2),\n        UNSAFE_DOWNGRADE(0x3);\n\n        private final byte code;\n\n        UpgradeType(int code) {\n            this.code = (byte) code;\n        }\n\n        public byte code() {\n            return code;\n        }\n\n        public static UpgradeType fromCode(int code) {\n            if (code == 0x1) {\n                return UPGRADE;\n            } else if (code == 0x2) {\n                return SAFE_DOWNGRADE;\n            } else if (code == 0x3) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            }\n        }\n    }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short maxVersionLevel, final UpgradeType upgradeType) {\n        if (maxVersionLevel == 0x0 && upgradeType.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    maxVersionLevel));\n        }\n        if (maxVersionLevel < 0x0) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = maxVersionLevel;\n        this.upgradeType = upgradeType;\n    }\n\n    public short maxVersionLevel() {\n        return maxVersionLevel;\n    }\n\n    public UpgradeType upgradeType() {\n        return upgradeType;\n    }\n\n    @Override\n    public boolean equals(Object other) {\n        if (this == other) {\n            return true;\n        }\n\n        if (!(other instanceof FeatureUpdate)) {\n            return false;\n        }\n\n        final FeatureUpdate that = (FeatureUpdate) other;\n        return this.maxVersionLevel == that.maxVersionLevel && this.upgradeType.equals(that.upgradeType);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String toString() {\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "ddfb979460e7f986b07ff05425972f47d0d3e6a8fb6c547b95513c52df83de24", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "encode-integer-literals", "level": 5, "line_count": 96, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__FeatureUpdate__bd2c6ab1.java", "order": 5, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 9}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-911dbd2c6ab1-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 188, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5e22f0c87899-I06", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0),\n        UPGRADE(1),\n        SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3);\n\n        private final byte code;\n\n        UpgradeType(int code) {\n            this.code = (byte) code;\n        }\n\n        public byte code() {\n            return code;\n        }\n\n        public static UpgradeType fromCode(int code) {\n            if (!((code == 1))) { if (code == 2) {\n                return SAFE_DOWNGRADE;\n            } else if (code == 3) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            } } else {\n                return UPGRADE;\n            }\n        }\n    }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short maxVersionLevel, final UpgradeType upgradeType) {\n        if (!((maxVersionLevel == 0 && upgradeType.equals(UpgradeType.UPGRADE)))) {} else {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    maxVersionLevel));\n        }\n        if (!((maxVersionLevel < 0))) {} else {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = maxVersionLevel;\n        this.upgradeType = upgradeType;\n    }\n\n    public short maxVersionLevel() {\n        return maxVersionLevel;\n    }\n\n    public UpgradeType upgradeType() {\n        return upgradeType;\n    }\n\n    @Override\n    public boolean equals(Object other) {\n        if (!((this == other))) {} else {\n            return true;\n        }\n\n        if (!((!(other instanceof FeatureUpdate)))) {} else {\n            return false;\n        }\n\n        final FeatureUpdate that = (FeatureUpdate) other;\n        return this.maxVersionLevel == that.maxVersionLevel && this.upgradeType.equals(that.upgradeType);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String toString() {\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "366f0aee1daf5c697408a323bc2e7312245239a1e4ef6dd0ad2dddc680d427d7", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "invert-conditions", "level": 6, "line_count": 96, "local_path": "expressions/invert-conditions/I06__apache-kafka__FeatureUpdate__f0c87899.java", "order": 6, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 5}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-5e22f0c87899-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 189, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7e5a8a38dd83-I07", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0),\n        UPGRADE(1),\n        SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3);\n\n        private final byte code;\n\n        UpgradeType(int code) {\nif (((0xE06D ^ 0xE06D) != 0)) { throw new AssertionError(); }\n\n            this.code = (byte) code;\n        }\n\n        public byte code() {\nif (((0xA987 ^ 0xA987) != 0)) { throw new AssertionError(); }\n\n            return code;\n        }\n\n        public static UpgradeType fromCode(int code) {\nif (((0x6181 ^ 0x6181) != 0)) { throw new AssertionError(); }\n\n            if (code == 1) {\n                return UPGRADE;\n            } else if (code == 2) {\n                return SAFE_DOWNGRADE;\n            } else if (code == 3) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            }\n        }\n    }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short maxVersionLevel, final UpgradeType upgradeType) {\nif (((0x8EF ^ 0x8EF) != 0)) { throw new AssertionError(); }\n\n        if (maxVersionLevel == 0 && upgradeType.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    maxVersionLevel));\n        }\n        if (maxVersionLevel < 0) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = maxVersionLevel;\n        this.upgradeType = upgradeType;\n    }\n\n    public short maxVersionLevel() {\nif (((0x7ABF ^ 0x7ABF) != 0)) { throw new AssertionError(); }\n\n        return maxVersionLevel;\n    }\n\n    public UpgradeType upgradeType() {\nif (((0xCD ^ 0xCD) != 0)) { throw new AssertionError(); }\n\n        return upgradeType;\n    }\n\n    @Override\n    public boolean equals(Object other) {\nif (((0x6138 ^ 0x6138) != 0)) { throw new AssertionError(); }\n\n        if (this == other) {\n            return true;\n        }\n\n        if (!(other instanceof FeatureUpdate)) {\n            return false;\n        }\n\n        final FeatureUpdate that = (FeatureUpdate) other;\n        return this.maxVersionLevel == that.maxVersionLevel && this.upgradeType.equals(that.upgradeType);\n    }\n\n    @Override\n    public int hashCode() {\nif (((0xCD20 ^ 0xCD20) != 0)) { throw new AssertionError(); }\n\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String toString() {\nif (((0x36BF ^ 0x36BF) != 0)) { throw new AssertionError(); }\n\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "2bba85dc9fd0cbcb1cd84ee246c0d1c9357ade2dbea5d85bca7a72873761d584", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "insert-dead-branches", "level": 7, "line_count": 114, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__FeatureUpdate__8a38dd83.java", "order": 7, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 9}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-7e5a8a38dd83-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 190, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d6f085afb06a-I08", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0),\n        UPGRADE(1),\n        SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3);\n\n        private final byte code;\n\n        UpgradeType(int code) {\n{\n  int factorial = 1;\n  for (int currentFactor = 2; currentFactor <= 4; currentFactor++) {\n    factorial *= currentFactor;\n  }\n}\n\n            this.code = (byte) code;\n        }\n\n        public byte code() {\n            return code;\n        }\n\n        public static UpgradeType fromCode(int code) {\n            if (code == 1) {\n                return UPGRADE;\n            } else if (code == 2) {\n                return SAFE_DOWNGRADE;\n            } else if (code == 3) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            }\n        }\n    }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short maxVersionLevel, final UpgradeType upgradeType) {\n        if (maxVersionLevel == 0 && upgradeType.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    maxVersionLevel));\n        }\n        if (maxVersionLevel < 0) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = maxVersionLevel;\n        this.upgradeType = upgradeType;\n    }\n\n    public short maxVersionLevel() {\n        return maxVersionLevel;\n    }\n\n    public UpgradeType upgradeType() {\n        return upgradeType;\n    }\n\n    @Override\n    public boolean equals(Object other) {\n        if (this == other) {\n            return true;\n        }\n\n        if (!(other instanceof FeatureUpdate)) {\n            return false;\n        }\n\n        final FeatureUpdate that = (FeatureUpdate) other;\n        return this.maxVersionLevel == that.maxVersionLevel && this.upgradeType.equals(that.upgradeType);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String toString() {\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "f0ab854143ccf6592baaa2ae882e3d57ec87f3e4941190b89e589f8c549d2a3e", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 103, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__FeatureUpdate__85afb06a.java", "order": 8, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 6}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-d6f085afb06a-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 191, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3d6f70ecceee-I09", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0),\n        UPGRADE(1),\n        SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3);\n\n        private final byte code;\n\n        UpgradeType(int code) {\n            this.code = (byte) code;\n        }\n\n        public byte code() {\n            return code;\n        }\n\n        public static UpgradeType fromCode(int code) {\n            if (code == 1) {\n                return UPGRADE;\n            } else if (code == 2) {\n                return SAFE_DOWNGRADE;\n            } else if (code == 3) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            }\n        }\n    }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short maxVersionLevel, final UpgradeType upgradeType) {\n        if (maxVersionLevel == 0 && upgradeType.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    maxVersionLevel));\n        }\n        if (maxVersionLevel < 0) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = maxVersionLevel;\n        this.upgradeType = upgradeType;\n    }\n\n    public short maxVersionLevel() {\n        return maxVersionLevel;\n    }\n\n    public UpgradeType upgradeType() {\n        return upgradeType;\n    }\n\n    @Override\n    public boolean equals(Object other) {\n        if (this == other) {\n            return true;\n        }\n\n        if (!(other instanceof FeatureUpdate)) {\n            return false;\n        }\n\n        final FeatureUpdate that = (FeatureUpdate) other;\n        return this.maxVersionLevel == that.maxVersionLevel && this.upgradeType.equals(that.upgradeType);\n    }\n\n    @Override\n    public int hashCode() {\n{boolean lI0O_0380b76d=((0x4458^0x4458)!=0);lI0O_0380b76d=!(!lI0O_0380b76d);}\n\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String toString() {\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "33ffdc5de91854d05a3a94c7d125fa797a2df70ab5232e070f8059501b16dee9", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 98, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__FeatureUpdate__70ecceee.java", "order": 9, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-3d6f70ecceee-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 192, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2ef025dc7f26-I10", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */ @InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0), UPGRADE(1), SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3); private final byte code;\n\n        UpgradeType(int code) { this.code = (byte) code; }\n\n        public byte code() { return code;\n        }\n\n        public static UpgradeType fromCode(int code) {\n            if (code == 1) {\n                return UPGRADE; } else if (code == 2) {\n                return SAFE_DOWNGRADE; } else if (code == 3) {\n                return UNSAFE_DOWNGRADE; } else { return UNKNOWN;\n            } } }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short maxVersionLevel, final UpgradeType upgradeType) { if (maxVersionLevel == 0 && upgradeType.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\", maxVersionLevel)); }\n        if (maxVersionLevel < 0) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = maxVersionLevel;\n        this.upgradeType = upgradeType; }\n\n    public short maxVersionLevel() {\n        return maxVersionLevel; }\n\n    public UpgradeType upgradeType() { return upgradeType; }\n\n    @Override\n    public boolean equals(Object other) {\n        if (this == other) {\n            return true; }\n\n        if (!(other instanceof FeatureUpdate)) { return false; } final FeatureUpdate that = (FeatureUpdate) other; return this.maxVersionLevel == that.maxVersionLevel && this.upgradeType.equals(that.upgradeType);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(maxVersionLevel, upgradeType);\n    } @Override public String toString() { return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "341adafba6fc0123411125bb4b541c94c758241935ffdbe292b445dc0bd2fce0", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "partially-compact-layout", "level": 10, "line_count": 65, "local_path": "layout/partially-compact-layout/I10__apache-kafka__FeatureUpdate__25dc7f26.java", "order": 10, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 70, "line_break_groups_removed": 28, "line_breaks_removed": 31, "whitespace_characters_removed": 239}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-2ef025dc7f26-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 193, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1709a123f261-I11", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0),\n        UPGRADE(1),\n        SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3);\n\n        private final byte code;\n\n        UpgradeType(int code) {\n            this.code = (byte) code;\n        }\n\n        public byte code() {\n            return code;\n        }\n\n        public static UpgradeType fromCode(int code) {\n            final int a = 2;\n            final int b = -1;\n            final int c = 1;\n            final int d = 1;\n            final int e = 1;\n            final int f = 2;\n            if (code == (a + b)) {\n                return UPGRADE;\n            } else if (code == (c + d)) {\n                return SAFE_DOWNGRADE;\n            } else if (code == (e + f)) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            }\n        }\n    }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short maxVersionLevel, final UpgradeType upgradeType) {\n        final int g = 1;\n        final int h = -1;\n        if (maxVersionLevel == (g + h) && upgradeType.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    maxVersionLevel));\n        }\n        final int i = 1;\n        final int j = -1;\n        if (maxVersionLevel < (i + j)) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = maxVersionLevel;\n        this.upgradeType = upgradeType;\n    }\n\n    public short maxVersionLevel() {\n        return maxVersionLevel;\n    }\n\n    public UpgradeType upgradeType() {\n        return upgradeType;\n    }\n\n    @Override\n    public boolean equals(Object other) {\n        if (this == other) {\n            return true;\n        }\n\n        if (!(other instanceof FeatureUpdate)) {\n            return false;\n        }\n\n        final FeatureUpdate that = (FeatureUpdate) other;\n        return this.maxVersionLevel == that.maxVersionLevel && this.upgradeType.equals(that.upgradeType);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String toString() {\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "b19f6762035a6186cc63f355fcdbe53e33bb6bb3dc46dd6f5957492165d43ada", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 106, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__FeatureUpdate__a123f261.java", "order": 11, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 5, "intermediate_variables_introduced": 10, "statements_augmented": 3}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-1709a123f261-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 194, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-78d8f43aebf7-I12", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0),\n        UPGRADE(1),\n        SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3);\n\n        private final byte code;\n\n        UpgradeType(int code) {\n            this.code = (byte) code;\n        }\n\n        public byte code() {\n            return code;\n        }\n\n        public static UpgradeType fromCode(int code) {\n            if (code == 1) {\n                return UPGRADE;\n            } else if (code == 2) {\n                return SAFE_DOWNGRADE;\n            } else if (code == 3) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            }\n        }\n    }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short maxVersionLevel, final UpgradeType upgradeType) {\n        if (maxVersionLevel == 0 && upgradeType.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    maxVersionLevel));\n        }\n        if (maxVersionLevel < 0) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = maxVersionLevel;\n        this.upgradeType = upgradeType;\n    }\n\n    public short maxVersionLevel() {\n        return maxVersionLevel;\n    }\n\n    public UpgradeType upgradeType() {\n        return upgradeType;\n    }\n\n    @Override\n    public boolean equals(Object other) {\n        if (this == other) {\n            return true;\n        }\n\n        if (!(other instanceof FeatureUpdate)) {\n            return false;\n        }\n\n        final FeatureUpdate that = (FeatureUpdate) other;\n        return this.maxVersionLevel == that.maxVersionLevel && this.upgradeType.equals(that.upgradeType);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String toString() {\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 96, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__FeatureUpdate__f43aebf7.java", "order": 12, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-78d8f43aebf7-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 195, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b36ca9aba86f-I13", "source": "package org.apache.kafka.clients.admin;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport java.util.Objects;\n\n/**\n * Encapsulates details about an update to a finalized feature.\n */\n@InterfaceAudience.Public\npublic class FeatureUpdate {\n    private final short maxVersionLevel;\n    private final UpgradeType upgradeType;\n\n    public enum UpgradeType {\n        UNKNOWN(0),\n        UPGRADE(1),\n        SAFE_DOWNGRADE(2),\n        UNSAFE_DOWNGRADE(3);\n\n        private final byte code;\n\n        UpgradeType(int code) {\n            this.code = (byte) code;\n        }\n\n        public byte code() {\n            return code;\n        }\n\n        public static UpgradeType fromCode(int code) {\n            if (code == 1) {\n                return UPGRADE;\n            } else if (code == 2) {\n                return SAFE_DOWNGRADE;\n            } else if (code == 3) {\n                return UNSAFE_DOWNGRADE;\n            } else {\n                return UNKNOWN;\n            }\n        }\n    }\n\n    /**\n     * @param maxVersionLevel   The new maximum version level for the finalized feature.\n     *                          a value of zero is special and indicates that the update is intended to\n     *                          delete the finalized feature, and should be accompanied by setting\n     *                          the upgradeType to safe or unsafe.\n     * @param upgradeType     Indicate what kind of upgrade should be performed in this operation.\n     *                          - UPGRADE: upgrading the feature level\n     *                          - SAFE_DOWNGRADE: only downgrades which do not result in metadata loss are permitted\n     *                          - UNSAFE_DOWNGRADE: any downgrade, including those which may result in metadata loss, are permitted\n     */\n    public FeatureUpdate(final short maxVersionLevel, final UpgradeType upgradeType) {\n        if (maxVersionLevel == 0 && upgradeType.equals(UpgradeType.UPGRADE)) {\n            throw new IllegalArgumentException(String.format(\n                    \"The upgradeType flag should be set to SAFE_DOWNGRADE or UNSAFE_DOWNGRADE when the provided maxVersionLevel:%d is < 1.\",\n                    maxVersionLevel));\n        }\n        if (maxVersionLevel < 0) {\n            throw new IllegalArgumentException(\"Cannot specify a negative version level.\");\n        }\n        this.maxVersionLevel = maxVersionLevel;\n        this.upgradeType = upgradeType;\n    }\n\n    public short maxVersionLevel() {\n        return maxVersionLevel;\n    }\n\n    public UpgradeType upgradeType() {\n        return upgradeType;\n    }\n\n    @Override\n    public boolean equals(Object other) {\n        if (this == other) {\n            return true;\n        }\n\n        if (!(other instanceof FeatureUpdate)) {\n            return false;\n        }\n\n        final FeatureUpdate that = (FeatureUpdate) other;\n        return this.maxVersionLevel == that.maxVersionLevel && this.upgradeType.equals(that.upgradeType);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(maxVersionLevel, upgradeType);\n    }\n\n    @Override\n    public String toString() {\n        return String.format(\"FeatureUpdate{maxVersionLevel:%d, upgradeType:%s}\", maxVersionLevel, upgradeType);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__FeatureUpdate__54435597.java", "base_sample_id": "source-e8fe870434eb9f67", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java", "interference": "lower-for-to-while", "level": 13, "line_count": 96, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__FeatureUpdate__a9aba86f.java", "order": 13, "original_content_sha256": "5b256b046865dc663905d659946e77f7f2797cdc0c8f8471288757004d6adaed", "parent_variant_id": "int-aabd54435597-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java#L24-L115", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "FeatureUpdate", "variant_id": "int-b36ca9aba86f-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 196, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-646839318cfa-SRC", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition partition, final IsolationLevel isolationLevel, final long deadlineMs) {\n        super(Type.CURRENT_LAG, deadlineMs);\n        this.partition = Objects.requireNonNull(partition);\n        this.isolationLevel = Objects.requireNonNull(isolationLevel);\n    }\n\n    public TopicPartition partition() {\n        return partition;\n    }\n\n    public IsolationLevel isolationLevel() {\n        return isolationLevel;\n    }\n\n    @Override\n    public String toStringBase() {\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": null, "level": 0, "line_count": 31, "local_path": "source-original/SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "order": 0, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-646839318cfa-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 141, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1f6ceb075c0a-I01", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition partition, final IsolationLevel isolationLevel, final long deadlineMs) {\n        super(Type.CURRENT_LAG, deadlineMs);\n        this.partition = Objects.requireNonNull(partition);\n        this.isolationLevel = Objects.requireNonNull(isolationLevel);\n    }\n\n    public TopicPartition partition() {\n        return partition;\n    }\n\n    public IsolationLevel isolationLevel() {\n        return isolationLevel;\n    }\n\n    @Override\n    public String toStringBase() {\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "remove-comments", "level": 1, "line_count": 31, "local_path": "comments/remove-comments/I01__apache-kafka__CurrentLagEvent__eb075c0a.java", "order": 1, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 0, "comments_removed": 0}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-1f6ceb075c0a-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 142, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3a1bfd32af2c-I02", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition par, final IsolationLevel isolation, final long deadline) {\n        super(Type.CURRENT_LAG, deadline);\n        this.partition = Objects.requireNonNull(par);\n        this.isolationLevel = Objects.requireNonNull(isolation);\n    }\n\n    public TopicPartition par() {\n        return partition;\n    }\n\n    public IsolationLevel isolation() {\n        return isolationLevel;\n    }\n\n    @Override\n    public String to() {\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b1b515ec5850e24d8a4e786157304ef984bb36b80ff93ac131746dddb6883faf", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "shorten-identifiers", "level": 2, "line_count": 31, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__CurrentLagEvent__fd32af2c.java", "order": 2, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 3, "identifiers_declared": 3, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-3a1bfd32af2c-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 143, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-acd93240900e-I03", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition operation, final IsolationLevel primaryAccount, final long sharedNode) {\n        super(Type.CURRENT_LAG, sharedNode);\n        this.partition = Objects.requireNonNull(operation);\n        this.isolationLevel = Objects.requireNonNull(primaryAccount);\n    }\n\n    public TopicPartition loadValue() {\n        return partition;\n    }\n\n    public IsolationLevel validateResult() {\n        return isolationLevel;\n    }\n\n    @Override\n    public String buildAccount() {\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "be1f60dd9687e5fd49c6bda46ba593e1d849f64d40ecce585622cc36b262d875", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "mislead-identifiers", "level": 3, "line_count": 31, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__CurrentLagEvent__3240900e.java", "order": 3, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 3, "identifiers_declared": 3, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 3, "local_random_pool_selections": 3, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 3, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-acd93240900e-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 144, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5e45914582a3-I04", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition a, final IsolationLevel b, final long c) {\n        super(Type.CURRENT_LAG, c);\n        this.partition = Objects.requireNonNull(a);\n        this.isolationLevel = Objects.requireNonNull(b);\n    }\n\n    public TopicPartition a() {\n        return partition;\n    }\n\n    public IsolationLevel b() {\n        return isolationLevel;\n    }\n\n    @Override\n    public String c() {\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "4b63a5ed6ea7b86873be3e2a467412fa609648920507f2ecc891f8a1f4229987", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "garble-identifiers", "level": 4, "line_count": 31, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__CurrentLagEvent__914582a3.java", "order": 4, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 3, "identifiers_declared": 3, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-5e45914582a3-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 145, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f0f69897bdf8-I05", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition partition, final IsolationLevel isolationLevel, final long deadlineMs) {\n        super(Type.CURRENT_LAG, deadlineMs);\n        this.partition = Objects.requireNonNull(partition);\n        this.isolationLevel = Objects.requireNonNull(isolationLevel);\n    }\n\n    public TopicPartition partition() {\n        return partition;\n    }\n\n    public IsolationLevel isolationLevel() {\n        return isolationLevel;\n    }\n\n    @Override\n    public String toStringBase() {\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "encode-integer-literals", "level": 5, "line_count": 31, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__CurrentLagEvent__9897bdf8.java", "order": 5, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-f0f69897bdf8-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 146, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fe9f1b6e99a7-I06", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition partition, final IsolationLevel isolationLevel, final long deadlineMs) {\n        super(Type.CURRENT_LAG, deadlineMs);\n        this.partition = Objects.requireNonNull(partition);\n        this.isolationLevel = Objects.requireNonNull(isolationLevel);\n    }\n\n    public TopicPartition partition() {\n        return partition;\n    }\n\n    public IsolationLevel isolationLevel() {\n        return isolationLevel;\n    }\n\n    @Override\n    public String toStringBase() {\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "invert-conditions", "level": 6, "line_count": 31, "local_path": "expressions/invert-conditions/I06__apache-kafka__CurrentLagEvent__1b6e99a7.java", "order": 6, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-fe9f1b6e99a7-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 147, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0fa29f1c40f8-I07", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition partition, final IsolationLevel isolationLevel, final long deadlineMs) {\n        super(Type.CURRENT_LAG, deadlineMs);\nif (((0x55A5 ^ 0x55A5) != 0)) { throw new AssertionError(); }\n\n        this.partition = Objects.requireNonNull(partition);\n        this.isolationLevel = Objects.requireNonNull(isolationLevel);\n    }\n\n    public TopicPartition partition() {\nif (((0x5385 ^ 0x5385) != 0)) { throw new AssertionError(); }\n\n        return partition;\n    }\n\n    public IsolationLevel isolationLevel() {\nif (((0x27B9 ^ 0x27B9) != 0)) { throw new AssertionError(); }\n\n        return isolationLevel;\n    }\n\n    @Override\n    public String toStringBase() {\nif (((0xB972 ^ 0xB972) != 0)) { throw new AssertionError(); }\n\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d770500aebc4b79a2d234fda09db602675532b8a35cc1149a91159b06f203368", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "insert-dead-branches", "level": 7, "line_count": 39, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__CurrentLagEvent__9f1c40f8.java", "order": 7, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-0fa29f1c40f8-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 148, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4944185ad66e-I08", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition partition, final IsolationLevel isolationLevel, final long deadlineMs) {\n        super(Type.CURRENT_LAG, deadlineMs);\n        this.partition = Objects.requireNonNull(partition);\n        this.isolationLevel = Objects.requireNonNull(isolationLevel);\n    }\n\n    public TopicPartition partition() {\n        return partition;\n    }\n\n    public IsolationLevel isolationLevel() {\n{\n  int factorial = 1;\n  for (int currentFactor = 2; currentFactor <= 4; currentFactor++) {\n    factorial *= currentFactor;\n  }\n}\n\n        return isolationLevel;\n    }\n\n    @Override\n    public String toStringBase() {\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ea4468edb0007aa4414b7ca88cb4c14a3262e10e3e51952f51732018733087a1", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 38, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__CurrentLagEvent__185ad66e.java", "order": 8, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 6}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-4944185ad66e-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 149, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-25bfee171ae5-I09", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition partition, final IsolationLevel isolationLevel, final long deadlineMs) {\n        super(Type.CURRENT_LAG, deadlineMs);\n        this.partition = Objects.requireNonNull(partition);\n        this.isolationLevel = Objects.requireNonNull(isolationLevel);\n    }\n\n    public TopicPartition partition() {\n{int lI0O_fdbea9e0=0x4AD0-0x4AD0;lI0O_fdbea9e0=(lI0O_fdbea9e0==0)?(lI0O_fdbea9e0|0):(lI0O_fdbea9e0&0);}\n\n        return partition;\n    }\n\n    public IsolationLevel isolationLevel() {\n        return isolationLevel;\n    }\n\n    @Override\n    public String toStringBase() {\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "56ea8744c7968c74c439c4ce7f0480ea52c5b7a69b672b072c02cb3cbde543c0", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 33, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__CurrentLagEvent__ee171ae5.java", "order": 9, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 1}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-25bfee171ae5-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 150, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-54af90df9052-I10", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel; import org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong; public class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition partition, final IsolationLevel isolationLevel, final long deadlineMs) {\n        super(Type.CURRENT_LAG, deadlineMs); this.partition = Objects.requireNonNull(partition); this.isolationLevel = Objects.requireNonNull(isolationLevel); } public TopicPartition partition() {\n        return partition;\n    }\n\n    public IsolationLevel isolationLevel() {\n        return isolationLevel;\n    } @Override\n    public String toStringBase() { return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel; }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "84f2fd6dc7cdd114fd41c81083404aec28849cb5f6f22782bb02612802857a18", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "partially-compact-layout", "level": 10, "line_count": 19, "local_path": "layout/partially-compact-layout/I10__apache-kafka__CurrentLagEvent__90df9052.java", "order": 10, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 23, "line_break_groups_removed": 9, "line_breaks_removed": 12, "whitespace_characters_removed": 43}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-54af90df9052-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 151, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5b7af5ce0478-I11", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition partition, final IsolationLevel isolationLevel, final long deadlineMs) {\n        super(Type.CURRENT_LAG, deadlineMs);\n        this.partition = Objects.requireNonNull(partition);\n        this.isolationLevel = Objects.requireNonNull(isolationLevel);\n    }\n\n    public TopicPartition partition() {\n        return partition;\n    }\n\n    public IsolationLevel isolationLevel() {\n        return isolationLevel;\n    }\n\n    @Override\n    public String toStringBase() {\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 31, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__CurrentLagEvent__f5ce0478.java", "order": 11, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-5b7af5ce0478-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 152, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dd1ac2936992-I12", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition partition, final IsolationLevel isolationLevel, final long deadlineMs) {\n        super(Type.CURRENT_LAG, deadlineMs);\n        this.partition = Objects.requireNonNull(partition);\n        this.isolationLevel = Objects.requireNonNull(isolationLevel);\n    }\n\n    public TopicPartition partition() {\n        return partition;\n    }\n\n    public IsolationLevel isolationLevel() {\n        return isolationLevel;\n    }\n\n    @Override\n    public String toStringBase() {\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 31, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__CurrentLagEvent__c2936992.java", "order": 12, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-dd1ac2936992-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 153, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4f0782b381bd-I13", "source": "package org.apache.kafka.clients.consumer.internals.events;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicPartition;\nimport java.util.Objects;\nimport java.util.OptionalLong;\n\npublic class CurrentLagEvent extends CompletableApplicationEvent<OptionalLong> {\n\n    private final TopicPartition partition;\n\n    private final IsolationLevel isolationLevel;\n\n    public CurrentLagEvent(final TopicPartition partition, final IsolationLevel isolationLevel, final long deadlineMs) {\n        super(Type.CURRENT_LAG, deadlineMs);\n        this.partition = Objects.requireNonNull(partition);\n        this.isolationLevel = Objects.requireNonNull(isolationLevel);\n    }\n\n    public TopicPartition partition() {\n        return partition;\n    }\n\n    public IsolationLevel isolationLevel() {\n        return isolationLevel;\n    }\n\n    @Override\n    public String toStringBase() {\n        return super.toStringBase() + \", partition=\" + partition + \", isolationLevel=\" + isolationLevel;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__CurrentLagEvent__39318cfa.java", "base_sample_id": "source-fd6e7718030791d7", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java", "interference": "lower-for-to-while", "level": 13, "line_count": 31, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__CurrentLagEvent__82b381bd.java", "order": 13, "original_content_sha256": "fcf0923f44462cc3e6b5e1cc49d04138cbd84017a31e1d54e3ce94298e9aebdf", "parent_variant_id": "int-646839318cfa-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/CurrentLagEvent.java#L26-L50", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "CurrentLagEvent", "variant_id": "int-4f0782b381bd-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 154, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b27f5016bd62-SRC", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n/**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator previousAuthenticator, NetworkReceive networkReceive, long nowNanos) {\n        this.previousAuthenticator = Objects.requireNonNull(previousAuthenticator);\n        this.networkReceive = networkReceive;\n        this.reauthenticationBeginNanos = nowNanos;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive networkReceive() {\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator previousAuthenticator() {\n        return previousAuthenticator;\n    }\n\n    /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long reauthenticationBeginNanos() {\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": null, "level": 0, "line_count": 77, "local_path": "source-original/SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "order": 0, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-b27f5016bd62-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 225, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f0d20287cc43-I01", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n\n\n\n\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n    public ReauthenticationContext(Authenticator previousAuthenticator, NetworkReceive networkReceive, long nowNanos) {\n        this.previousAuthenticator = Objects.requireNonNull(previousAuthenticator);\n        this.networkReceive = networkReceive;\n        this.reauthenticationBeginNanos = nowNanos;\n    }\n\n    \n\n\n\n\n\n\n\n\n\n\n    public NetworkReceive networkReceive() {\n        return networkReceive;\n    }\n\n    \n\n\n\n\n\n\n    public Authenticator previousAuthenticator() {\n        return previousAuthenticator;\n    }\n\n    \n\n\n\n\n\n\n    public long reauthenticationBeginNanos() {\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "7a3347611ac23846f28678aebabaae2eda5f587ff647bcc12fd49376f3d5aee4", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "remove-comments", "level": 1, "line_count": 77, "local_path": "comments/remove-comments/I01__apache-kafka__ReauthenticationContext__0287cc43.java", "order": 1, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 2422, "comments_removed": 5}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-f0d20287cc43-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 226, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-560dd64d79a3-I02", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n/**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator previous, NetworkReceive network2, long now) {\n        this.previousAuthenticator = Objects.requireNonNull(previous);\n        this.networkReceive = network2;\n        this.reauthenticationBeginNanos = now;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive network() {\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator previous() {\n        return previousAuthenticator;\n    }\n\n    /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long reauthentication() {\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "5ed007ca7a13777b7b60402b179df56fadc910ab3e646ac20ff82eb25d285a4e", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "shorten-identifiers", "level": 2, "line_count": 77, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__ReauthenticationContext__d64d79a3.java", "order": 2, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 3, "identifiers_declared": 3, "local_name_collisions_avoided": 1, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-560dd64d79a3-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 227, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-48016acbe581-I03", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n/**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator primaryAddress, NetworkReceive defaultSession, long schedule) {\n        this.previousAuthenticator = Objects.requireNonNull(primaryAddress);\n        this.networkReceive = defaultSession;\n        this.reauthenticationBeginNanos = schedule;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive refreshRequest() {\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator validateAddress() {\n        return previousAuthenticator;\n    }\n\n    /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long validateMessage() {\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "c2cbb2abe62426b39d81e3f4bef6040e2b27e289e5a896a726dbe524d5d09f75", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "mislead-identifiers", "level": 3, "line_count": 77, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__ReauthenticationContext__6acbe581.java", "order": 3, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 3, "identifiers_declared": 3, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 2, "local_random_pool_selections": 3, "local_total_length_difference": 7, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 1, "method_declarations_renamed": 3, "method_exact_length_matches": 1, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 17}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-48016acbe581-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 228, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-29b83a74ea15-I04", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n/**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator a, NetworkReceive b, long c) {\n        this.previousAuthenticator = Objects.requireNonNull(a);\n        this.networkReceive = b;\n        this.reauthenticationBeginNanos = c;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive a() {\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator b() {\n        return previousAuthenticator;\n    }\n\n    /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long c() {\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "6566121ad842fd1c191b5b3b33474c8d6bc0fa0619f34abae029223eb6980873", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "garble-identifiers", "level": 4, "line_count": 77, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__ReauthenticationContext__3a74ea15.java", "order": 4, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 3, "identifiers_declared": 3, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-29b83a74ea15-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 229, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0dfcd8bf6a57-I05", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n/**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator previousAuthenticator, NetworkReceive networkReceive, long nowNanos) {\n        this.previousAuthenticator = Objects.requireNonNull(previousAuthenticator);\n        this.networkReceive = networkReceive;\n        this.reauthenticationBeginNanos = nowNanos;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive networkReceive() {\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator previousAuthenticator() {\n        return previousAuthenticator;\n    }\n\n    /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long reauthenticationBeginNanos() {\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "encode-integer-literals", "level": 5, "line_count": 77, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__ReauthenticationContext__d8bf6a57.java", "order": 5, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-0dfcd8bf6a57-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 230, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fdbd3da4b55a-I06", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n/**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator previousAuthenticator, NetworkReceive networkReceive, long nowNanos) {\n        this.previousAuthenticator = Objects.requireNonNull(previousAuthenticator);\n        this.networkReceive = networkReceive;\n        this.reauthenticationBeginNanos = nowNanos;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive networkReceive() {\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator previousAuthenticator() {\n        return previousAuthenticator;\n    }\n\n    /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long reauthenticationBeginNanos() {\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "invert-conditions", "level": 6, "line_count": 77, "local_path": "expressions/invert-conditions/I06__apache-kafka__ReauthenticationContext__3da4b55a.java", "order": 6, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-fdbd3da4b55a-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 231, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-67ed612bea46-I07", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n/**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator previousAuthenticator, NetworkReceive networkReceive, long nowNanos) {\nif (((0xA2D7 ^ 0xA2D7) != 0)) { throw new AssertionError(); }\n\n        this.previousAuthenticator = Objects.requireNonNull(previousAuthenticator);\n        this.networkReceive = networkReceive;\n        this.reauthenticationBeginNanos = nowNanos;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive networkReceive() {\nif (((0x77AB ^ 0x77AB) != 0)) { throw new AssertionError(); }\n\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator previousAuthenticator() {\nif (((0xEE27 ^ 0xEE27) != 0)) { throw new AssertionError(); }\n\n        return previousAuthenticator;\n    }\n\n    /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long reauthenticationBeginNanos() {\nif (((0xE822 ^ 0xE822) != 0)) { throw new AssertionError(); }\n\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "93d736e61e208a7d05cdb52a10988102b4b3184eeda2283380ebb9930b94dcab", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "insert-dead-branches", "level": 7, "line_count": 85, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__ReauthenticationContext__612bea46.java", "order": 7, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-67ed612bea46-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 232, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-170f4be32906-I08", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n/**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator previousAuthenticator, NetworkReceive networkReceive, long nowNanos) {\n        this.previousAuthenticator = Objects.requireNonNull(previousAuthenticator);\n        this.networkReceive = networkReceive;\n        this.reauthenticationBeginNanos = nowNanos;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive networkReceive() {\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator previousAuthenticator() {\n        return previousAuthenticator;\n    }\n\n    /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long reauthenticationBeginNanos() {\n{\n  int evenNumberCount = 0;\n  for (int candidateNumber = 0; candidateNumber < 6; candidateNumber++) {\n    if (candidateNumber % 2 == 0) {\n      evenNumberCount++;\n    }\n  }\n}\n\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "7d267540c46774061268fac97c29b46d2156b40ac5d7e9607cf3782601cb11a0", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 86, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__ReauthenticationContext__4be32906.java", "order": 8, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 2}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-170f4be32906-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 233, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8561e67c6299-I09", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n/**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator previousAuthenticator, NetworkReceive networkReceive, long nowNanos) {\n{int lI0O_64d49561=0x6CD1;lI0O_64d49561=((lI0O_64d49561^0x6CD1)|0)&-1;if(((lI0O_64d49561&1)==1)){lI0O_64d49561^=lI0O_64d49561;}}\n\n        this.previousAuthenticator = Objects.requireNonNull(previousAuthenticator);\n        this.networkReceive = networkReceive;\n        this.reauthenticationBeginNanos = nowNanos;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive networkReceive() {\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator previousAuthenticator() {\n        return previousAuthenticator;\n    }\n\n    /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long reauthenticationBeginNanos() {\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d8e3dd2c24c2bf21c9b21896e4acfa6dce09a17b6e8f88b882cdb11c346fcd8e", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 79, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__ReauthenticationContext__e67c6299.java", "order": 9, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-8561e67c6299-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 234, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0595472e2150-I10", "source": "package org.apache.kafka.common.network; import java.util.Objects; /**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext { private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator previousAuthenticator, NetworkReceive networkReceive, long nowNanos) { this.previousAuthenticator = Objects.requireNonNull(previousAuthenticator); this.networkReceive = networkReceive; this.reauthenticationBeginNanos = nowNanos;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive networkReceive() {\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator previousAuthenticator() { return previousAuthenticator; } /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long reauthenticationBeginNanos() { return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "0dfd9b021c2c52feb34fd01bcb19316226def64a642897f15843e0d45c655e7f", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "partially-compact-layout", "level": 10, "line_count": 65, "local_path": "layout/partially-compact-layout/I10__apache-kafka__ReauthenticationContext__472e2150.java", "order": 10, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 25, "line_break_groups_removed": 10, "line_breaks_removed": 12, "whitespace_characters_removed": 54}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-0595472e2150-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 235, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3dad940baeef-I11", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n/**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator previousAuthenticator, NetworkReceive networkReceive, long nowNanos) {\n        this.previousAuthenticator = Objects.requireNonNull(previousAuthenticator);\n        this.networkReceive = networkReceive;\n        this.reauthenticationBeginNanos = nowNanos;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive networkReceive() {\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator previousAuthenticator() {\n        return previousAuthenticator;\n    }\n\n    /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long reauthenticationBeginNanos() {\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 77, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__ReauthenticationContext__940baeef.java", "order": 11, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-3dad940baeef-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 236, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9fd1780c9581-I12", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n/**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator previousAuthenticator, NetworkReceive networkReceive, long nowNanos) {\n        this.previousAuthenticator = Objects.requireNonNull(previousAuthenticator);\n        this.networkReceive = networkReceive;\n        this.reauthenticationBeginNanos = nowNanos;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive networkReceive() {\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator previousAuthenticator() {\n        return previousAuthenticator;\n    }\n\n    /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long reauthenticationBeginNanos() {\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 77, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__ReauthenticationContext__780c9581.java", "order": 12, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-9fd1780c9581-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 237, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ab69eef57902-I13", "source": "package org.apache.kafka.common.network;\nimport java.util.Objects;\n\n/**\n * Defines the context in which an {@link Authenticator} is to be created during\n * a re-authentication.\n */\npublic class ReauthenticationContext {\n    private final NetworkReceive networkReceive;\n    private final Authenticator previousAuthenticator;\n    private final long reauthenticationBeginNanos;\n\n    /**\n     * Constructor\n     * \n     * @param previousAuthenticator\n     *            the mandatory {@link Authenticator} that was previously used to\n     *            authenticate the channel\n     * @param networkReceive\n     *            the applicable {@link NetworkReceive} instance, if any. For the\n     *            client side this may be a response that has been partially read, a\n     *            non-null instance that has had no data read into it yet, or null;\n     *            if it is non-null then this is the instance that data should\n     *            initially be read into during re-authentication. For the server\n     *            side this is mandatory and it must contain the\n     *            {@code SaslHandshakeRequest} that has been received on the server\n     *            and that initiates re-authentication.\n     * \n     * @param nowNanos\n     *            the current time. The value is in nanoseconds as per\n     *            {@code System.nanoTime()} and is therefore only useful when\n     *            compared to such a value -- it's absolute value is meaningless.\n     *            This defines the moment when re-authentication begins.\n     */\n    public ReauthenticationContext(Authenticator previousAuthenticator, NetworkReceive networkReceive, long nowNanos) {\n        this.previousAuthenticator = Objects.requireNonNull(previousAuthenticator);\n        this.networkReceive = networkReceive;\n        this.reauthenticationBeginNanos = nowNanos;\n    }\n\n    /**\n     * Return the applicable {@link NetworkReceive} instance, if any. For the client\n     * side this may be a response that has been partially read, a non-null instance\n     * that has had no data read into it yet, or null; if it is non-null then this\n     * is the instance that data should initially be read into during\n     * re-authentication. For the server side this is mandatory and it must contain\n     * the {@code SaslHandshakeRequest} that has been received on the server and\n     * that initiates re-authentication.\n     * \n     * @return the applicable {@link NetworkReceive} instance, if any\n     */\n    public NetworkReceive networkReceive() {\n        return networkReceive;\n    }\n\n    /**\n     * Return the always non-null {@link Authenticator} that was previously used to\n     * authenticate the channel\n     * \n     * @return the always non-null {@link Authenticator} that was previously used to\n     *         authenticate the channel\n     */\n    public Authenticator previousAuthenticator() {\n        return previousAuthenticator;\n    }\n\n    /**\n     * Return the time when re-authentication began. The value is in nanoseconds as\n     * per {@code System.nanoTime()} and is therefore only useful when compared to\n     * such a value -- it's absolute value is meaningless.\n     * \n     * @return the time when re-authentication began\n     */\n    public long reauthenticationBeginNanos() {\n        return reauthenticationBeginNanos;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__ReauthenticationContext__5016bd62.java", "base_sample_id": "source-91fc340c76173864", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java", "interference": "lower-for-to-while", "level": 13, "line_count": 77, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__ReauthenticationContext__eef57902.java", "order": 13, "original_content_sha256": "7532e1073d324e4db637b22e29629dcd2c40c020da654eb7c06348915e26d619", "parent_variant_id": "int-b27f5016bd62-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/network/ReauthenticationContext.java#L21-L94", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ReauthenticationContext", "variant_id": "int-ab69eef57902-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 238, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c9dd6f20458e-SRC", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData data) {\n            super(ApiKeys.VOTE);\n            this.data = data;\n        }\n\n        @Override\n        public VoteRequest build(short version) {\n            return new VoteRequest(data, version);\n        }\n\n        @Override\n        public String toString() {\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData data, short version) {\n        super(ApiKeys.VOTE, version);\n        this.data = data;\n    }\n\n    @Override\n    public VoteRequestData data() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) {\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code()));\n    }\n\n    public static VoteRequest parse(Readable readable, short version) {\n        return new VoteRequest(new VoteRequestData(readable, version), version);\n    }\n\n    public static VoteRequestData singletonRequest(TopicPartition topicPartition,\n                                                   String clusterId,\n                                                   int replicaEpoch,\n                                                   int replicaId,\n                                                   int lastEpoch,\n                                                   long lastEpochEndOffset,\n                                                   boolean preVote) {\n        return new VoteRequestData()\n                   .setClusterId(clusterId)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(topicPartition.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(topicPartition.partition())\n                                   .setReplicaEpoch(replicaEpoch)\n                                   .setReplicaId(replicaId)\n                                   .setLastOffsetEpoch(lastEpoch)\n                                   .setLastOffset(lastEpochEndOffset)\n                                   .setPreVote(preVote))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": null, "level": 0, "line_count": 75, "local_path": "source-original/SRC__apache-kafka__VoteRequest__6f20458e.java", "order": 0, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-c9dd6f20458e-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 323, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-75983afab5f8-I01", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData data) {\n            super(ApiKeys.VOTE);\n            this.data = data;\n        }\n\n        @Override\n        public VoteRequest build(short version) {\n            return new VoteRequest(data, version);\n        }\n\n        @Override\n        public String toString() {\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData data, short version) {\n        super(ApiKeys.VOTE, version);\n        this.data = data;\n    }\n\n    @Override\n    public VoteRequestData data() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) {\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code()));\n    }\n\n    public static VoteRequest parse(Readable readable, short version) {\n        return new VoteRequest(new VoteRequestData(readable, version), version);\n    }\n\n    public static VoteRequestData singletonRequest(TopicPartition topicPartition,\n                                                   String clusterId,\n                                                   int replicaEpoch,\n                                                   int replicaId,\n                                                   int lastEpoch,\n                                                   long lastEpochEndOffset,\n                                                   boolean preVote) {\n        return new VoteRequestData()\n                   .setClusterId(clusterId)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(topicPartition.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(topicPartition.partition())\n                                   .setReplicaEpoch(replicaEpoch)\n                                   .setReplicaId(replicaId)\n                                   .setLastOffsetEpoch(lastEpoch)\n                                   .setLastOffset(lastEpochEndOffset)\n                                   .setPreVote(preVote))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "remove-comments", "level": 1, "line_count": 75, "local_path": "comments/remove-comments/I01__apache-kafka__VoteRequest__3afab5f8.java", "order": 1, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 0, "comments_removed": 0}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-75983afab5f8-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 324, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f71d699f43dd-I02", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData dat) {\n            super(ApiKeys.VOTE);\n            this.data = dat;\n        }\n\n        @Override\n        public VoteRequest bui(short ver) {\n            return new VoteRequest(data, ver);\n        }\n\n        @Override\n        public String to() {\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData dat2, short ver2) {\n        super(ApiKeys.VOTE, ver2);\n        this.data = dat2;\n    }\n\n    @Override\n    public VoteRequestData dat() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse get(int throttle, Throwable e) {\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code()));\n    }\n\n    public static VoteRequest par(Readable rea, short ver3) {\n        return new VoteRequest(new VoteRequestData(rea, ver3), ver3);\n    }\n\n    public static VoteRequestData singleton(TopicPartition topic2,\n                                                   String cluster,\n                                                   int replica,\n                                                   int replica2,\n                                                   int last,\n                                                   long last2,\n                                                   boolean pre) {\n        return new VoteRequestData()\n                   .setClusterId(cluster)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(topic2.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(topic2.partition())\n                                   .setReplicaEpoch(replica)\n                                   .setReplicaId(replica2)\n                                   .setLastOffsetEpoch(last)\n                                   .setLastOffset(last2)\n                                   .setPreVote(pre))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "84ca1b4686ca9383f5ec2fc0108a932d1a2ff328c5de8879704149a1c18f0921", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "shorten-identifiers", "level": 2, "line_count": 75, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__VoteRequest__699f43dd.java", "order": 2, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 16, "identifiers_declared": 15, "local_name_collisions_avoided": 6, "method_calls_renamed": 0, "method_declarations_renamed": 6, "method_name_collisions_avoided": 0, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-f71d699f43dd-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 325, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-92205a035f16-I03", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData step) {\n            super(ApiKeys.VOTE);\n            this.data = step;\n        }\n\n        @Override\n        public VoteRequest merge(short address) {\n            return new VoteRequest(data, address);\n        }\n\n        @Override\n        public String loadItem() {\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData item, short history) {\n        super(ApiKeys.VOTE, history);\n        this.data = item;\n    }\n\n    @Override\n    public VoteRequestData read() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse validateAccount(int pendingRequest, Throwable age) {\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(age).code()));\n    }\n\n    public static VoteRequest store(Readable nextData, short payload) {\n        return new VoteRequest(new VoteRequestData(nextData, payload), payload);\n    }\n\n    public static VoteRequestData validateBalance(TopicPartition defaultRequest,\n                                                   String nextOrder,\n                                                   int activeBuffer,\n                                                   int nextState,\n                                                   int activeKey,\n                                                   long primaryAddress,\n                                                   boolean balance) {\n        return new VoteRequestData()\n                   .setClusterId(nextOrder)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(defaultRequest.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(defaultRequest.partition())\n                                   .setReplicaEpoch(activeBuffer)\n                                   .setReplicaId(nextState)\n                                   .setLastOffsetEpoch(activeKey)\n                                   .setLastOffset(primaryAddress)\n                                   .setPreVote(balance))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "be300c3b3c3a4d9d5b94a59b8782d4a4687aac3ab3542afc64783d37d8a051fc", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "mislead-identifiers", "level": 3, "line_count": 75, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__VoteRequest__5a035f16.java", "order": 3, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 16, "identifiers_declared": 15, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 2, "local_exact_length_matches": 13, "local_random_pool_selections": 15, "local_total_length_difference": 6, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 6, "method_exact_length_matches": 4, "method_name_groups": 6, "method_random_pool_selections": 6, "method_total_length_difference": 2}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-92205a035f16-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 326, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f35dfbdf7d7f-I04", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData a) {\n            super(ApiKeys.VOTE);\n            this.data = a;\n        }\n\n        @Override\n        public VoteRequest a(short b) {\n            return new VoteRequest(data, b);\n        }\n\n        @Override\n        public String b() {\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData c, short d) {\n        super(ApiKeys.VOTE, d);\n        this.data = c;\n    }\n\n    @Override\n    public VoteRequestData a() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse b(int f, Throwable e) {\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code()));\n    }\n\n    public static VoteRequest c(Readable g, short h) {\n        return new VoteRequest(new VoteRequestData(g, h), h);\n    }\n\n    public static VoteRequestData d(TopicPartition i,\n                                                   String j,\n                                                   int k,\n                                                   int l,\n                                                   int m,\n                                                   long n,\n                                                   boolean o) {\n        return new VoteRequestData()\n                   .setClusterId(j)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(i.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(i.partition())\n                                   .setReplicaEpoch(k)\n                                   .setReplicaId(l)\n                                   .setLastOffsetEpoch(m)\n                                   .setLastOffset(n)\n                                   .setPreVote(o))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "142b657746ec1287912af7f613cf93e10d268e3752e27c6ffe0d641cfb102dcc", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "garble-identifiers", "level": 4, "line_count": 75, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__VoteRequest__fbdf7d7f.java", "order": 4, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 16, "identifiers_declared": 15, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 6, "method_name_collisions_avoided": 0, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-f35dfbdf7d7f-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 327, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5587fa3fcd4d-I05", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData data) {\n            super(ApiKeys.VOTE);\n            this.data = data;\n        }\n\n        @Override\n        public VoteRequest build(short version) {\n            return new VoteRequest(data, version);\n        }\n\n        @Override\n        public String toString() {\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData data, short version) {\n        super(ApiKeys.VOTE, version);\n        this.data = data;\n    }\n\n    @Override\n    public VoteRequestData data() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) {\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code()));\n    }\n\n    public static VoteRequest parse(Readable readable, short version) {\n        return new VoteRequest(new VoteRequestData(readable, version), version);\n    }\n\n    public static VoteRequestData singletonRequest(TopicPartition topicPartition,\n                                                   String clusterId,\n                                                   int replicaEpoch,\n                                                   int replicaId,\n                                                   int lastEpoch,\n                                                   long lastEpochEndOffset,\n                                                   boolean preVote) {\n        return new VoteRequestData()\n                   .setClusterId(clusterId)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(topicPartition.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(topicPartition.partition())\n                                   .setReplicaEpoch(replicaEpoch)\n                                   .setReplicaId(replicaId)\n                                   .setLastOffsetEpoch(lastEpoch)\n                                   .setLastOffset(lastEpochEndOffset)\n                                   .setPreVote(preVote))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "encode-integer-literals", "level": 5, "line_count": 75, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__VoteRequest__fa3fcd4d.java", "order": 5, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-5587fa3fcd4d-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 328, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d49af0618861-I06", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData data) {\n            super(ApiKeys.VOTE);\n            this.data = data;\n        }\n\n        @Override\n        public VoteRequest build(short version) {\n            return new VoteRequest(data, version);\n        }\n\n        @Override\n        public String toString() {\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData data, short version) {\n        super(ApiKeys.VOTE, version);\n        this.data = data;\n    }\n\n    @Override\n    public VoteRequestData data() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) {\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code()));\n    }\n\n    public static VoteRequest parse(Readable readable, short version) {\n        return new VoteRequest(new VoteRequestData(readable, version), version);\n    }\n\n    public static VoteRequestData singletonRequest(TopicPartition topicPartition,\n                                                   String clusterId,\n                                                   int replicaEpoch,\n                                                   int replicaId,\n                                                   int lastEpoch,\n                                                   long lastEpochEndOffset,\n                                                   boolean preVote) {\n        return new VoteRequestData()\n                   .setClusterId(clusterId)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(topicPartition.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(topicPartition.partition())\n                                   .setReplicaEpoch(replicaEpoch)\n                                   .setReplicaId(replicaId)\n                                   .setLastOffsetEpoch(lastEpoch)\n                                   .setLastOffset(lastEpochEndOffset)\n                                   .setPreVote(preVote))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "invert-conditions", "level": 6, "line_count": 75, "local_path": "expressions/invert-conditions/I06__apache-kafka__VoteRequest__f0618861.java", "order": 6, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-d49af0618861-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 329, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f527c76cb049-I07", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData data) {\n            super(ApiKeys.VOTE);\nif (((0x69CB ^ 0x69CB) != 0)) { throw new AssertionError(); }\n\n            this.data = data;\n        }\n\n        @Override\n        public VoteRequest build(short version) {\nif (((0xAF52 ^ 0xAF52) != 0)) { throw new AssertionError(); }\n\n            return new VoteRequest(data, version);\n        }\n\n        @Override\n        public String toString() {\nif (((0xFEF7 ^ 0xFEF7) != 0)) { throw new AssertionError(); }\n\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData data, short version) {\n        super(ApiKeys.VOTE, version);\nif (((0x27C1 ^ 0x27C1) != 0)) { throw new AssertionError(); }\n\n        this.data = data;\n    }\n\n    @Override\n    public VoteRequestData data() {\nif (((0xD645 ^ 0xD645) != 0)) { throw new AssertionError(); }\n\n        return data;\n    }\n\n    @Override\n    public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) {\nif (((0xCA9 ^ 0xCA9) != 0)) { throw new AssertionError(); }\n\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code()));\n    }\n\n    public static VoteRequest parse(Readable readable, short version) {\nif (((0xE1AB ^ 0xE1AB) != 0)) { throw new AssertionError(); }\n\n        return new VoteRequest(new VoteRequestData(readable, version), version);\n    }\n\n    public static VoteRequestData singletonRequest(TopicPartition topicPartition,\n                                                   String clusterId,\n                                                   int replicaEpoch,\n                                                   int replicaId,\n                                                   int lastEpoch,\n                                                   long lastEpochEndOffset,\n                                                   boolean preVote) {\nif (((0x9687 ^ 0x9687) != 0)) { throw new AssertionError(); }\n\n        return new VoteRequestData()\n                   .setClusterId(clusterId)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(topicPartition.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(topicPartition.partition())\n                                   .setReplicaEpoch(replicaEpoch)\n                                   .setReplicaId(replicaId)\n                                   .setLastOffsetEpoch(lastEpoch)\n                                   .setLastOffset(lastEpochEndOffset)\n                                   .setPreVote(preVote))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "c16c752a932708c4c8f98dd5c829225f459b73cd942d59797042bcac4675c483", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "insert-dead-branches", "level": 7, "line_count": 91, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__VoteRequest__c76cb049.java", "order": 7, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 8}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-f527c76cb049-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 330, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4d8fc749f4c3-I08", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData data) {\n            super(ApiKeys.VOTE);\n            this.data = data;\n        }\n\n        @Override\n        public VoteRequest build(short version) {\n            return new VoteRequest(data, version);\n        }\n\n        @Override\n        public String toString() {\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData data, short version) {\n        super(ApiKeys.VOTE, version);\n        this.data = data;\n    }\n\n    @Override\n    public VoteRequestData data() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) {\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code()));\n    }\n\n    public static VoteRequest parse(Readable readable, short version) {\n        return new VoteRequest(new VoteRequestData(readable, version), version);\n    }\n\n    public static VoteRequestData singletonRequest(TopicPartition topicPartition,\n                                                   String clusterId,\n                                                   int replicaEpoch,\n                                                   int replicaId,\n                                                   int lastEpoch,\n                                                   long lastEpochEndOffset,\n                                                   boolean preVote) {\n{\n  boolean featureEnabled = false;\n  for (int toggleCount = 0; toggleCount < 3; toggleCount++) {\n    featureEnabled = !featureEnabled;\n  }\n}\n\n        return new VoteRequestData()\n                   .setClusterId(clusterId)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(topicPartition.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(topicPartition.partition())\n                                   .setReplicaEpoch(replicaEpoch)\n                                   .setReplicaId(replicaId)\n                                   .setLastOffsetEpoch(lastEpoch)\n                                   .setLastOffset(lastEpochEndOffset)\n                                   .setPreVote(preVote))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "51e8388eb8f30cf521eed236d9f0775e719a50784b04a2548e9425e66eeafac0", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 82, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__VoteRequest__c749f4c3.java", "order": 8, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 7}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-4d8fc749f4c3-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 331, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ca6a67f733ab-I09", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData data) {\n            super(ApiKeys.VOTE);\n            this.data = data;\n        }\n\n        @Override\n        public VoteRequest build(short version) {\n            return new VoteRequest(data, version);\n        }\n\n        @Override\n        public String toString() {\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData data, short version) {\n        super(ApiKeys.VOTE, version);\n        this.data = data;\n    }\n\n    @Override\n    public VoteRequestData data() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) {\n{int lI0O_6907c4d9=0x862E^0x862E;if(lI0O_6907c4d9!=0){if(((lI0O_6907c4d9|1)&1)==0){lI0O_6907c4d9++;}else{lI0O_6907c4d9--;}}}\n\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code()));\n    }\n\n    public static VoteRequest parse(Readable readable, short version) {\n        return new VoteRequest(new VoteRequestData(readable, version), version);\n    }\n\n    public static VoteRequestData singletonRequest(TopicPartition topicPartition,\n                                                   String clusterId,\n                                                   int replicaEpoch,\n                                                   int replicaId,\n                                                   int lastEpoch,\n                                                   long lastEpochEndOffset,\n                                                   boolean preVote) {\n        return new VoteRequestData()\n                   .setClusterId(clusterId)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(topicPartition.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(topicPartition.partition())\n                                   .setReplicaEpoch(replicaEpoch)\n                                   .setReplicaId(replicaId)\n                                   .setLastOffsetEpoch(lastEpoch)\n                                   .setLastOffset(lastEpochEndOffset)\n                                   .setPreVote(preVote))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "a24c551f1072d2b7477d9138a911767eb79f6a1a0fd8e80e6ef67c9523cba33f", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 77, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__VoteRequest__67f733ab.java", "order": 9, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 5}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-ca6a67f733ab-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 332, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7c00c0646236-I10", "source": "package org.apache.kafka.common.requests; import org.apache.kafka.common.TopicPartition; import org.apache.kafka.common.message.VoteRequestData; import org.apache.kafka.common.message.VoteResponseData; import org.apache.kafka.common.protocol.ApiKeys; import org.apache.kafka.common.protocol.Errors; import org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData data) { super(ApiKeys.VOTE);\n            this.data = data; } @Override\n        public VoteRequest build(short version) {\n            return new VoteRequest(data, version);\n        } @Override\n        public String toString() {\n            return data.toString();\n        } } private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData data, short version) {\n        super(ApiKeys.VOTE, version);\n        this.data = data; }\n\n    @Override public VoteRequestData data() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) {\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code())); } public static VoteRequest parse(Readable readable, short version) {\n        return new VoteRequest(new VoteRequestData(readable, version), version);\n    }\n\n    public static VoteRequestData singletonRequest(TopicPartition topicPartition,\n                                                   String clusterId, int replicaEpoch,\n                                                   int replicaId,\n                                                   int lastEpoch,\n                                                   long lastEpochEndOffset,\n                                                   boolean preVote) { return new VoteRequestData() .setClusterId(clusterId) .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(topicPartition.topic())\n                           .setPartitions(List.of( new VoteRequestData.PartitionData() .setPartitionIndex(topicPartition.partition()) .setReplicaEpoch(replicaEpoch)\n                                   .setReplicaId(replicaId)\n                                   .setLastOffsetEpoch(lastEpoch)\n                                   .setLastOffset(lastEpochEndOffset)\n                                   .setPreVote(preVote))\n                           ))); } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "467a10aeeaa70fa4f481166b541a33c40cb0b504805901a326ce5965960e17ac", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "partially-compact-layout", "level": 10, "line_count": 46, "local_path": "layout/partially-compact-layout/I10__apache-kafka__VoteRequest__c0646236.java", "order": 10, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 63, "line_break_groups_removed": 25, "line_breaks_removed": 29, "whitespace_characters_removed": 266}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-7c00c0646236-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 333, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-64567172989a-I11", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData data) {\n            super(ApiKeys.VOTE);\n            this.data = data;\n        }\n\n        @Override\n        public VoteRequest build(short version) {\n            return new VoteRequest(data, version);\n        }\n\n        @Override\n        public String toString() {\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData data, short version) {\n        super(ApiKeys.VOTE, version);\n        this.data = data;\n    }\n\n    @Override\n    public VoteRequestData data() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) {\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code()));\n    }\n\n    public static VoteRequest parse(Readable readable, short version) {\n        return new VoteRequest(new VoteRequestData(readable, version), version);\n    }\n\n    public static VoteRequestData singletonRequest(TopicPartition topicPartition,\n                                                   String clusterId,\n                                                   int replicaEpoch,\n                                                   int replicaId,\n                                                   int lastEpoch,\n                                                   long lastEpochEndOffset,\n                                                   boolean preVote) {\n        return new VoteRequestData()\n                   .setClusterId(clusterId)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(topicPartition.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(topicPartition.partition())\n                                   .setReplicaEpoch(replicaEpoch)\n                                   .setReplicaId(replicaId)\n                                   .setLastOffsetEpoch(lastEpoch)\n                                   .setLastOffset(lastEpochEndOffset)\n                                   .setPreVote(preVote))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 75, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__VoteRequest__7172989a.java", "order": 11, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-64567172989a-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 334, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1fed6560051e-I12", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData data) {\n            super(ApiKeys.VOTE);\n            this.data = data;\n        }\n\n        @Override\n        public VoteRequest build(short version) {\n            return new VoteRequest(data, version);\n        }\n\n        @Override\n        public String toString() {\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData data, short version) {\n        super(ApiKeys.VOTE, version);\n        this.data = data;\n    }\n\n    @Override\n    public VoteRequestData data() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) {\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code()));\n    }\n\n    public static VoteRequest parse(Readable readable, short version) {\n        return new VoteRequest(new VoteRequestData(readable, version), version);\n    }\n\n    public static VoteRequestData singletonRequest(TopicPartition topicPartition,\n                                                   String clusterId,\n                                                   int replicaEpoch,\n                                                   int replicaId,\n                                                   int lastEpoch,\n                                                   long lastEpochEndOffset,\n                                                   boolean preVote) {\n        return new VoteRequestData()\n                   .setClusterId(clusterId)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(topicPartition.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(topicPartition.partition())\n                                   .setReplicaEpoch(replicaEpoch)\n                                   .setReplicaId(replicaId)\n                                   .setLastOffsetEpoch(lastEpoch)\n                                   .setLastOffset(lastEpochEndOffset)\n                                   .setPreVote(preVote))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 75, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__VoteRequest__6560051e.java", "order": 12, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-1fed6560051e-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 335, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4b9fbca419b4-I13", "source": "package org.apache.kafka.common.requests;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.common.message.VoteRequestData;\nimport org.apache.kafka.common.message.VoteResponseData;\nimport org.apache.kafka.common.protocol.ApiKeys;\nimport org.apache.kafka.common.protocol.Errors;\nimport org.apache.kafka.common.protocol.Readable;\nimport java.util.List;\n\npublic class VoteRequest extends AbstractRequest {\n\n    public static class Builder extends AbstractRequest.Builder<VoteRequest> {\n        private final VoteRequestData data;\n\n        public Builder(VoteRequestData data) {\n            super(ApiKeys.VOTE);\n            this.data = data;\n        }\n\n        @Override\n        public VoteRequest build(short version) {\n            return new VoteRequest(data, version);\n        }\n\n        @Override\n        public String toString() {\n            return data.toString();\n        }\n    }\n\n    private final VoteRequestData data;\n\n    private VoteRequest(VoteRequestData data, short version) {\n        super(ApiKeys.VOTE, version);\n        this.data = data;\n    }\n\n    @Override\n    public VoteRequestData data() {\n        return data;\n    }\n\n    @Override\n    public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) {\n        return new VoteResponse(new VoteResponseData()\n            .setErrorCode(Errors.forException(e).code()));\n    }\n\n    public static VoteRequest parse(Readable readable, short version) {\n        return new VoteRequest(new VoteRequestData(readable, version), version);\n    }\n\n    public static VoteRequestData singletonRequest(TopicPartition topicPartition,\n                                                   String clusterId,\n                                                   int replicaEpoch,\n                                                   int replicaId,\n                                                   int lastEpoch,\n                                                   long lastEpochEndOffset,\n                                                   boolean preVote) {\n        return new VoteRequestData()\n                   .setClusterId(clusterId)\n                   .setTopics(List.of(\n                       new VoteRequestData.TopicData()\n                           .setTopicName(topicPartition.topic())\n                           .setPartitions(List.of(\n                               new VoteRequestData.PartitionData()\n                                   .setPartitionIndex(topicPartition.partition())\n                                   .setReplicaEpoch(replicaEpoch)\n                                   .setReplicaId(replicaId)\n                                   .setLastOffsetEpoch(lastEpoch)\n                                   .setLastOffset(lastEpochEndOffset)\n                                   .setPreVote(preVote))\n                           )));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__VoteRequest__6f20458e.java", "base_sample_id": "source-2ab6f8acf737ca35", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java", "interference": "lower-for-to-while", "level": 13, "line_count": 75, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__VoteRequest__bca419b4.java", "order": 13, "original_content_sha256": "a4339f87e413468d17fd2fd00e4cd9259c1741f1fe0544bc74f4a8c9fe3cf3fe", "parent_variant_id": "int-c9dd6f20458e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/requests/VoteRequest.java#L29-L94", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "VoteRequest", "variant_id": "int-4b9fbca419b4-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 336, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-066304a45a50-SRC", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void configure(Map<String, ?> configs, String saslMechanism, List<AppConfigurationEntry> jaasConfigEntries) {\n        ConfigurationUtils cu = new ConfigurationUtils(configs, saslMechanism);\n        URL tokenEndpointUrl = cu.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (tokenEndpointUrl.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever();\n        else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(configs, saslMechanism, jaasConfigEntries);\n    }\n\n    @Override\n    public String retrieve() throws JwtRetrieverException {\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void close() throws IOException {\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever delegate() {\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": null, "level": 0, "line_count": 71, "local_path": "source-original/SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "order": 0, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-066304a45a50-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 155, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c47a11e16dd1-I01", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void configure(Map<String, ?> configs, String saslMechanism, List<AppConfigurationEntry> jaasConfigEntries) {\n        ConfigurationUtils cu = new ConfigurationUtils(configs, saslMechanism);\n        URL tokenEndpointUrl = cu.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (tokenEndpointUrl.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever();\n        else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(configs, saslMechanism, jaasConfigEntries);\n    }\n\n    @Override\n    public String retrieve() throws JwtRetrieverException {\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void close() throws IOException {\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever delegate() {\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "be5757d15a99e13184579f4ce1a08603627d28ef5216fa42e26251acefa8f77f", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "remove-comments", "level": 1, "line_count": 71, "local_path": "comments/remove-comments/I01__apache-kafka__DefaultJwtRetriever__11e16dd1.java", "order": 1, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 921, "comments_removed": 1}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-c47a11e16dd1-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 156, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bf036676ce57-I02", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void con(Map<String, ?> con, String sasl, List<AppConfigurationEntry> jaas) {\n        ConfigurationUtils cu = new ConfigurationUtils(con, sasl);\n        URL token = cu.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (token.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever();\n        else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(con, sasl, jaas);\n    }\n\n    @Override\n    public String ret() throws JwtRetrieverException {\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void clo() throws IOException {\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever del() {\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "6522b0bd670677bc5f50c8e2dc2d86d6938bf1f0df9d3f16285eb980ab193a09", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "shorten-identifiers", "level": 2, "line_count": 71, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__DefaultJwtRetriever__6676ce57.java", "order": 2, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-bf036676ce57-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 157, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-32be634280bb-I03", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void summarize(Map<String, ?> session, String activeRequest, List<AppConfigurationEntry> defaultAddress) {\n        ConfigurationUtils map = new ConfigurationUtils(session, activeRequest);\n        URL pendingBalance = map.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (pendingBalance.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever();\n        else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(session, activeRequest, defaultAddress);\n    }\n\n    @Override\n    public String readPath() throws JwtRetrieverException {\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void reset() throws IOException {\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever readUser() {\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b7e87adb6c06f1f70fdf41b6603e1a23717825cee2d5e5eb45ca40d117ea4b3e", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "mislead-identifiers", "level": 3, "line_count": 71, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__DefaultJwtRetriever__634280bb.java", "order": 3, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 2, "local_random_pool_selections": 5, "local_total_length_difference": 6, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 4, "method_name_groups": 4, "method_random_pool_selections": 4, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-32be634280bb-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 158, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5458fb3cf0dd-I04", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void a(Map<String, ?> a, String b, List<AppConfigurationEntry> c) {\n        ConfigurationUtils d = new ConfigurationUtils(a, b);\n        URL e = d.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (e.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever();\n        else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(a, b, c);\n    }\n\n    @Override\n    public String b() throws JwtRetrieverException {\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void c() throws IOException {\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever d() {\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "f46acc66b0977254d752f59573af89d910dd71eea2815ee1c80bdd9e9795970a", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "garble-identifiers", "level": 4, "line_count": 71, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__DefaultJwtRetriever__fb3cf0dd.java", "order": 4, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-5458fb3cf0dd-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 159, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-28df55c0bd14-I05", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void configure(Map<String, ?> configs, String saslMechanism, List<AppConfigurationEntry> jaasConfigEntries) {\n        ConfigurationUtils cu = new ConfigurationUtils(configs, saslMechanism);\n        URL tokenEndpointUrl = cu.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (tokenEndpointUrl.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever();\n        else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(configs, saslMechanism, jaasConfigEntries);\n    }\n\n    @Override\n    public String retrieve() throws JwtRetrieverException {\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void close() throws IOException {\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever delegate() {\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "encode-integer-literals", "level": 5, "line_count": 71, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__DefaultJwtRetriever__55c0bd14.java", "order": 5, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-28df55c0bd14-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 160, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-51e8f8a5db0d-I06", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void configure(Map<String, ?> configs, String saslMechanism, List<AppConfigurationEntry> jaasConfigEntries) {\n        ConfigurationUtils cu = new ConfigurationUtils(configs, saslMechanism);\n        URL tokenEndpointUrl = cu.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (!((tokenEndpointUrl.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\")))) { delegate = new ClientCredentialsJwtRetriever(); } else { delegate = new FileJwtRetriever(); }\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(configs, saslMechanism, jaasConfigEntries);\n    }\n\n    @Override\n    public String retrieve() throws JwtRetrieverException {\n        if (!((delegate == null))) {} else { throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\"); }\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void close() throws IOException {\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever delegate() {\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "d53d290ecf8eda72e01393ee21c4f85a038065b02b953669eac80c0b2f7cd3a1", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "invert-conditions", "level": 6, "line_count": 67, "local_path": "expressions/invert-conditions/I06__apache-kafka__DefaultJwtRetriever__f8a5db0d.java", "order": 6, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-51e8f8a5db0d-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 161, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7891f4c454f9-I07", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void configure(Map<String, ?> configs, String saslMechanism, List<AppConfigurationEntry> jaasConfigEntries) {\nif (((0x17EC ^ 0x17EC) != 0)) { throw new AssertionError(); }\n\n        ConfigurationUtils cu = new ConfigurationUtils(configs, saslMechanism);\n        URL tokenEndpointUrl = cu.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (tokenEndpointUrl.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever();\n        else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(configs, saslMechanism, jaasConfigEntries);\n    }\n\n    @Override\n    public String retrieve() throws JwtRetrieverException {\nif (((0xBB7A ^ 0xBB7A) != 0)) { throw new AssertionError(); }\n\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void close() throws IOException {\nif (((0x497 ^ 0x497) != 0)) { throw new AssertionError(); }\n\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever delegate() {\nif (((0xBCFB ^ 0xBCFB) != 0)) { throw new AssertionError(); }\n\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "2f2c2848e7c84743945618cc9fdf89d505c0ace345762f48f523022285b30c6f", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "insert-dead-branches", "level": 7, "line_count": 79, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__DefaultJwtRetriever__f4c454f9.java", "order": 7, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-7891f4c454f9-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 162, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-576e79d68710-I08", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void configure(Map<String, ?> configs, String saslMechanism, List<AppConfigurationEntry> jaasConfigEntries) {\n        ConfigurationUtils cu = new ConfigurationUtils(configs, saslMechanism);\n        URL tokenEndpointUrl = cu.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (tokenEndpointUrl.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever();\n        else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(configs, saslMechanism, jaasConfigEntries);\n    }\n\n    @Override\n    public String retrieve() throws JwtRetrieverException {\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void close() throws IOException {\n{\n  int totalScore = 240;\n  int numberOfScores = 3;\n  int averageScore = totalScore / numberOfScores;\n}\n\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever delegate() {\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b7ffbe6a487834682cc8376e5f6b1c71a3a91027d7b357eaafae90189d8ede14", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 77, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__DefaultJwtRetriever__79d68710.java", "order": 8, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 5, "readable_template_index": 5}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-576e79d68710-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 163, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c4170a9679ee-I09", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void configure(Map<String, ?> configs, String saslMechanism, List<AppConfigurationEntry> jaasConfigEntries) {\n        ConfigurationUtils cu = new ConfigurationUtils(configs, saslMechanism);\n        URL tokenEndpointUrl = cu.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (tokenEndpointUrl.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever();\n        else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(configs, saslMechanism, jaasConfigEntries);\n    }\n\n    @Override\n    public String retrieve() throws JwtRetrieverException {\n{int lI0O_1d39b6e3=0xECE1-0xECE1;lI0O_1d39b6e3=(lI0O_1d39b6e3==0)?(lI0O_1d39b6e3|0):(lI0O_1d39b6e3&0);}\n\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void close() throws IOException {\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever delegate() {\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d9f938f28a1c352a6091558454dd8a4add035666e4db9f38f1df411916caa9e1", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 73, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__DefaultJwtRetriever__0a9679ee.java", "order": 9, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 1}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-c4170a9679ee-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 164, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-04977a141eed-I10", "source": "package org.apache.kafka.common.security.oauthbearer; import org.apache.kafka.common.annotation.InterfaceAudience; import org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter; import org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger; import org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */ @InterfaceAudience.Public public class DefaultJwtRetriever implements JwtRetriever { private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate; @Override public void configure(Map<String, ?> configs, String saslMechanism, List<AppConfigurationEntry> jaasConfigEntries) { ConfigurationUtils cu = new ConfigurationUtils(configs, saslMechanism);\n        URL tokenEndpointUrl = cu.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL); if (tokenEndpointUrl.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever(); else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(configs, saslMechanism, jaasConfigEntries);\n    } @Override\n    public String retrieve() throws JwtRetrieverException {\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override public void close() throws IOException { Utils.closeQuietly(delegate, \"JWT retriever delegate\"); }\n\n    JwtRetriever delegate() { return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "16d5a30b7e029cb210430a4d1472ab112ff38328006468357f0d691a76515fd6", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "partially-compact-layout", "level": 10, "line_count": 50, "local_path": "layout/partially-compact-layout/I10__apache-kafka__DefaultJwtRetriever__7a141eed.java", "order": 10, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 44, "line_break_groups_removed": 17, "line_breaks_removed": 21, "whitespace_characters_removed": 68}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-04977a141eed-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 165, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bdf0c921af2e-I11", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void configure(Map<String, ?> configs, String saslMechanism, List<AppConfigurationEntry> jaasConfigEntries) {\n        ConfigurationUtils cu = new ConfigurationUtils(configs, saslMechanism);\n        URL tokenEndpointUrl = cu.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (tokenEndpointUrl.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever();\n        else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(configs, saslMechanism, jaasConfigEntries);\n    }\n\n    @Override\n    public String retrieve() throws JwtRetrieverException {\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void close() throws IOException {\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever delegate() {\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 71, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__DefaultJwtRetriever__c921af2e.java", "order": 11, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-bdf0c921af2e-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 166, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c5e94f1bf720-I12", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void configure(Map<String, ?> configs, String saslMechanism, List<AppConfigurationEntry> jaasConfigEntries) {\n        ConfigurationUtils cu = new ConfigurationUtils(configs, saslMechanism);\n        URL tokenEndpointUrl = cu.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (tokenEndpointUrl.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever();\n        else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(configs, saslMechanism, jaasConfigEntries);\n    }\n\n    @Override\n    public String retrieve() throws JwtRetrieverException {\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void close() throws IOException {\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever delegate() {\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 71, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__DefaultJwtRetriever__4f1bf720.java", "order": 12, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-c5e94f1bf720-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 167, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-29599b1c1df4-I13", "source": "package org.apache.kafka.common.security.oauthbearer;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientAssertionRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ClientSecretRequestFormatter;\nimport org.apache.kafka.common.security.oauthbearer.internals.secured.ConfigurationUtils;\nimport org.apache.kafka.common.utils.Utils;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\nimport javax.security.auth.login.AppConfigurationEntry;\nimport static org.apache.kafka.common.config.SaslConfigs.SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL;\n\n/**\n * {@code DefaultJwtRetriever} instantiates and delegates {@link JwtRetriever} API calls to an embedded implementation\n * based on configuration:\n *\n * <ul>\n *     <li>\n *         If the value of <code>sasl.oauthbearer.token.endpoint.url</code> is set to a value that starts with the\n *         <code>file</code> protocol (e.g. <code>file:/tmp/path/to/a/static-jwt.json</code>), an instance of\n *         {@link FileJwtRetriever} will be used as the underlying {@link JwtRetriever}. Otherwise, the URL is\n *         assumed to be an HTTP/HTTPS-based URL, and an instance of {@link ClientAssertionRequestFormatter} or\n *         {@link ClientSecretRequestFormatter} will be created and used.\n *     </li>\n * </ul>\n *\n * The configuration required by the individual {@code JwtRetriever} classes will likely differ. Please refer to the\n * official Apache Kafka documentation for more information on these, and related configuration.\n */\n@InterfaceAudience.Public\npublic class DefaultJwtRetriever implements JwtRetriever {\n\n    private static final Logger LOG = LoggerFactory.getLogger(DefaultJwtRetriever.class);\n\n    private JwtRetriever delegate;\n\n    @Override\n    public void configure(Map<String, ?> configs, String saslMechanism, List<AppConfigurationEntry> jaasConfigEntries) {\n        ConfigurationUtils cu = new ConfigurationUtils(configs, saslMechanism);\n        URL tokenEndpointUrl = cu.validateUrl(SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL);\n\n        if (tokenEndpointUrl.getProtocol().toLowerCase(Locale.ROOT).equals(\"file\"))\n            delegate = new FileJwtRetriever();\n        else\n            delegate = new ClientCredentialsJwtRetriever();\n\n        LOG.debug(\"Created instance of {} as delegate\", delegate.getClass().getName());\n        delegate.configure(configs, saslMechanism, jaasConfigEntries);\n    }\n\n    @Override\n    public String retrieve() throws JwtRetrieverException {\n        if (delegate == null)\n            throw new IllegalStateException(\"JWT retriever delegate is null; please call configure() first\");\n\n        return delegate.retrieve();\n    }\n\n    @Override\n    public void close() throws IOException {\n        Utils.closeQuietly(delegate, \"JWT retriever delegate\");\n    }\n\n    JwtRetriever delegate() {\n        return delegate;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__DefaultJwtRetriever__04a45a50.java", "base_sample_id": "source-a17d6406de3c29d7", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java", "interference": "lower-for-to-while", "level": 13, "line_count": 71, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__DefaultJwtRetriever__9b1c1df4.java", "order": 13, "original_content_sha256": "c5414ef8ace2d74c77158970e8407336c3433a2aab52bad89d3a3793e4ffadaf", "parent_variant_id": "int-066304a45a50-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/oauthbearer/DefaultJwtRetriever.java#L39-L93", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "DefaultJwtRetriever", "variant_id": "int-29599b1c1df4-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 168, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8d3e58001186-SRC", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String sslPrincipalMappingRules) {\n        this.rules = parseRules(splitRules(sslPrincipalMappingRules));\n    }\n\n    public static SslPrincipalMapper fromRules(String sslPrincipalMappingRules) {\n        return new SslPrincipalMapper(sslPrincipalMappingRules);\n    }\n\n    private static List<String> splitRules(String sslPrincipalMappingRules) {\n        if (sslPrincipalMappingRules == null) {\n            sslPrincipalMappingRules = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> result = new ArrayList<>();\n        Matcher matcher = RULE_SPLITTER.matcher(sslPrincipalMappingRules.trim());\n        while (matcher.find()) {\n            result.add(matcher.group(1));\n        }\n\n        return result;\n    }\n\n    private static List<Rule> parseRules(List<String> rules) {\n        List<Rule> result = new ArrayList<>();\n        for (String rule : rules) {\n            Matcher matcher = RULE_PARSER.matcher(rule);\n            if (!matcher.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + rule);\n            }\n            if (rule.length() != matcher.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + rule + \"`, unmatched substring: `\" + rule.substring(matcher.end()) + \"`\");\n            }\n\n            // empty rules are ignored\n            if (matcher.group(1) != null) {\n                result.add(new Rule());\n            } else if (matcher.group(2) != null) {\n                result.add(new Rule(matcher.group(2),\n                                    matcher.group(4),\n                                    \"L\".equals(matcher.group(6)),\n                                    \"U\".equals(matcher.group(6))));\n            }\n        }\n\n        return result;\n    }\n\n    public String getName(String distinguishedName) throws IOException {\n        for (Rule r : rules) {\n            String principalName = r.apply(distinguishedName);\n            if (principalName != null) {\n                return principalName;\n            }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + distinguishedName + \", rules \" + rules);\n    }\n\n    @Override\n    public String toString() {\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String msg) {\n            super(msg);\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String pattern, String replacement, boolean toLowerCase, boolean toUpperCase) {\n            isDefault = false;\n            this.pattern = pattern == null ? null : Pattern.compile(pattern);\n            this.replacement = replacement;\n            this.toLowerCase = toLowerCase;\n            this.toUpperCase = toUpperCase;\n        }\n\n        String apply(String distinguishedName) {\n            if (isDefault) {\n                return distinguishedName;\n            }\n\n            String result = null;\n            final Matcher m = pattern.matcher(distinguishedName);\n\n            if (m.matches()) {\n                result = distinguishedName.replaceAll(pattern.pattern(), escapeLiteralBackReferences(replacement, m.groupCount()));\n            }\n\n            if (toLowerCase && result != null) {\n                result = result.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && result != null) {\n                result = result.toUpperCase(Locale.ENGLISH);\n            }\n\n            return result;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String escapeLiteralBackReferences(final String unescaped, final int numCapturingGroups) {\n            if (numCapturingGroups == 0) {\n                return unescaped;\n            }\n\n            String value = unescaped;\n            final Matcher backRefMatcher = BACK_REFERENCE_PATTERN.matcher(value);\n            while (backRefMatcher.find()) {\n                final String backRefNum = backRefMatcher.group(1);\n                if (backRefNum.startsWith(\"0\")) {\n                    continue;\n                }\n                int backRefIndex = Integer.parseInt(backRefNum);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                while (backRefIndex > numCapturingGroups && backRefIndex >= 10) {\n                    backRefIndex /= 10;\n                }\n\n                if (backRefIndex > numCapturingGroups) {\n                    final StringBuilder sb = new StringBuilder(value.length() + 1);\n                    final int groupStart = backRefMatcher.start(1);\n\n                    sb.append(value, 0, groupStart - 1);\n                    sb.append(\"\\\\\");\n                    sb.append(value.substring(groupStart - 1));\n                    value = sb.toString();\n                }\n            }\n\n            return value;\n        }\n\n        @Override\n        public String toString() {\n            StringBuilder buf = new StringBuilder();\n            if (isDefault) {\n                buf.append(\"DEFAULT\");\n            } else {\n                buf.append(\"RULE:\");\n                if (pattern != null) {\n                    buf.append(pattern);\n                }\n                if (replacement != null) {\n                    buf.append(\"/\");\n                    buf.append(replacement);\n                }\n                if (toLowerCase) {\n                    buf.append(\"/L\");\n                } else if (toUpperCase) {\n                    buf.append(\"/U\");\n                }\n            }\n            return buf.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": null, "level": 0, "line_count": 197, "local_path": "source-original/SRC__apache-kafka__SslPrincipalMapper__58001186.java", "order": 0, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-8d3e58001186-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 295, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d9965c2d11ef-I01", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String sslPrincipalMappingRules) {\n        this.rules = parseRules(splitRules(sslPrincipalMappingRules));\n    }\n\n    public static SslPrincipalMapper fromRules(String sslPrincipalMappingRules) {\n        return new SslPrincipalMapper(sslPrincipalMappingRules);\n    }\n\n    private static List<String> splitRules(String sslPrincipalMappingRules) {\n        if (sslPrincipalMappingRules == null) {\n            sslPrincipalMappingRules = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> result = new ArrayList<>();\n        Matcher matcher = RULE_SPLITTER.matcher(sslPrincipalMappingRules.trim());\n        while (matcher.find()) {\n            result.add(matcher.group(1));\n        }\n\n        return result;\n    }\n\n    private static List<Rule> parseRules(List<String> rules) {\n        List<Rule> result = new ArrayList<>();\n        for (String rule : rules) {\n            Matcher matcher = RULE_PARSER.matcher(rule);\n            if (!matcher.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + rule);\n            }\n            if (rule.length() != matcher.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + rule + \"`, unmatched substring: `\" + rule.substring(matcher.end()) + \"`\");\n            }\n\n             \n            if (matcher.group(1) != null) {\n                result.add(new Rule());\n            } else if (matcher.group(2) != null) {\n                result.add(new Rule(matcher.group(2),\n                                    matcher.group(4),\n                                    \"L\".equals(matcher.group(6)),\n                                    \"U\".equals(matcher.group(6))));\n            }\n        }\n\n        return result;\n    }\n\n    public String getName(String distinguishedName) throws IOException {\n        for (Rule r : rules) {\n            String principalName = r.apply(distinguishedName);\n            if (principalName != null) {\n                return principalName;\n            }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + distinguishedName + \", rules \" + rules);\n    }\n\n    @Override\n    public String toString() {\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String msg) {\n            super(msg);\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String pattern, String replacement, boolean toLowerCase, boolean toUpperCase) {\n            isDefault = false;\n            this.pattern = pattern == null ? null : Pattern.compile(pattern);\n            this.replacement = replacement;\n            this.toLowerCase = toLowerCase;\n            this.toUpperCase = toUpperCase;\n        }\n\n        String apply(String distinguishedName) {\n            if (isDefault) {\n                return distinguishedName;\n            }\n\n            String result = null;\n            final Matcher m = pattern.matcher(distinguishedName);\n\n            if (m.matches()) {\n                result = distinguishedName.replaceAll(pattern.pattern(), escapeLiteralBackReferences(replacement, m.groupCount()));\n            }\n\n            if (toLowerCase && result != null) {\n                result = result.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && result != null) {\n                result = result.toUpperCase(Locale.ENGLISH);\n            }\n\n            return result;\n        }\n\n         \n         \n         \n         \n        private String escapeLiteralBackReferences(final String unescaped, final int numCapturingGroups) {\n            if (numCapturingGroups == 0) {\n                return unescaped;\n            }\n\n            String value = unescaped;\n            final Matcher backRefMatcher = BACK_REFERENCE_PATTERN.matcher(value);\n            while (backRefMatcher.find()) {\n                final String backRefNum = backRefMatcher.group(1);\n                if (backRefNum.startsWith(\"0\")) {\n                    continue;\n                }\n                int backRefIndex = Integer.parseInt(backRefNum);\n\n\n                 \n                 \n                 \n                 \n                while (backRefIndex > numCapturingGroups && backRefIndex >= 10) {\n                    backRefIndex /= 10;\n                }\n\n                if (backRefIndex > numCapturingGroups) {\n                    final StringBuilder sb = new StringBuilder(value.length() + 1);\n                    final int groupStart = backRefMatcher.start(1);\n\n                    sb.append(value, 0, groupStart - 1);\n                    sb.append(\"\\\\\");\n                    sb.append(value.substring(groupStart - 1));\n                    value = sb.toString();\n                }\n            }\n\n            return value;\n        }\n\n        @Override\n        public String toString() {\n            StringBuilder buf = new StringBuilder();\n            if (isDefault) {\n                buf.append(\"DEFAULT\");\n            } else {\n                buf.append(\"RULE:\");\n                if (pattern != null) {\n                    buf.append(pattern);\n                }\n                if (replacement != null) {\n                    buf.append(\"/\");\n                    buf.append(replacement);\n                }\n                if (toLowerCase) {\n                    buf.append(\"/L\");\n                } else if (toUpperCase) {\n                    buf.append(\"/U\");\n                }\n            }\n            return buf.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "ae1d11f952503d0f5d0e9ba6002f3f3809ca7764c8c3019f8832c195c48c002d", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "remove-comments", "level": 1, "line_count": 197, "local_path": "comments/remove-comments/I01__apache-kafka__SslPrincipalMapper__5c2d11ef.java", "order": 1, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 742, "comments_removed": 9}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-d9965c2d11ef-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 296, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a2c51b9db9fb-I02", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String ssl2) {\n        this.rules = parse(split(ssl2));\n    }\n\n    public static SslPrincipalMapper from(String ssl3) {\n        return new SslPrincipalMapper(ssl3);\n    }\n\n    private static List<String> split(String ssl4) {\n        if (ssl4 == null) {\n            ssl4 = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> res = new ArrayList<>();\n        Matcher mat = RULE_SPLITTER.matcher(ssl4.trim());\n        while (mat.find()) {\n            res.add(mat.group(1));\n        }\n\n        return res;\n    }\n\n    private static List<Rule> parse(List<String> rul) {\n        List<Rule> res2 = new ArrayList<>();\n        for (String rul2 : rul) {\n            Matcher mat2 = RULE_PARSER.matcher(rul2);\n            if (!mat2.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + rul2);\n            }\n            if (rul2.length() != mat2.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + rul2 + \"`, unmatched substring: `\" + rul2.substring(mat2.end()) + \"`\");\n            }\n\n            // empty rules are ignored\n            if (mat2.group(1) != null) {\n                res2.add(new Rule());\n            } else if (mat2.group(2) != null) {\n                res2.add(new Rule(mat2.group(2),\n                                    mat2.group(4),\n                                    \"L\".equals(mat2.group(6)),\n                                    \"U\".equals(mat2.group(6))));\n            }\n        }\n\n        return res2;\n    }\n\n    public String get(String distinguished) throws IOException {\n        for (Rule r : rules) {\n            String principal = r.apply(distinguished);\n            if (principal != null) {\n                return principal;\n            }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + distinguished + \", rules \" + rules);\n    }\n\n    @Override\n    public String to() {\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String msg) {\n            super(msg);\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String pat, String rep, boolean to, boolean to2) {\n            isDefault = false;\n            this.pattern = pat == null ? null : Pattern.compile(pat);\n            this.replacement = rep;\n            this.toLowerCase = to;\n            this.toUpperCase = to2;\n        }\n\n        String app(String distinguished2) {\n            if (isDefault) {\n                return distinguished2;\n            }\n\n            String res3 = null;\n            final Matcher m = pattern.matcher(distinguished2);\n\n            if (m.matches()) {\n                res3 = distinguished2.replaceAll(pattern.pattern(), escape(replacement, m.groupCount()));\n            }\n\n            if (toLowerCase && res3 != null) {\n                res3 = res3.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && res3 != null) {\n                res3 = res3.toUpperCase(Locale.ENGLISH);\n            }\n\n            return res3;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String escape(final String une, final int num) {\n            if (num == 0) {\n                return une;\n            }\n\n            String val = une;\n            final Matcher back = BACK_REFERENCE_PATTERN.matcher(val);\n            while (back.find()) {\n                final String back2 = back.group(1);\n                if (back2.startsWith(\"0\")) {\n                    continue;\n                }\n                int back3 = Integer.parseInt(back2);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                while (back3 > num && back3 >= 10) {\n                    back3 /= 10;\n                }\n\n                if (back3 > num) {\n                    final StringBuilder sb = new StringBuilder(val.length() + 1);\n                    final int group2 = back.start(1);\n\n                    sb.append(val, 0, group2 - 1);\n                    sb.append(\"\\\\\");\n                    sb.append(val.substring(group2 - 1));\n                    val = sb.toString();\n                }\n            }\n\n            return val;\n        }\n\n        @Override\n        public String to() {\n            StringBuilder buf = new StringBuilder();\n            if (isDefault) {\n                buf.append(\"DEFAULT\");\n            } else {\n                buf.append(\"RULE:\");\n                if (pattern != null) {\n                    buf.append(pattern);\n                }\n                if (replacement != null) {\n                    buf.append(\"/\");\n                    buf.append(replacement);\n                }\n                if (toLowerCase) {\n                    buf.append(\"/L\");\n                } else if (toUpperCase) {\n                    buf.append(\"/U\");\n                }\n            }\n            return buf.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "2d53714bac30c9ad1d9f4a209648c578476e452bf82ea901da665790cda3c316", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "shorten-identifiers", "level": 2, "line_count": 197, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__SslPrincipalMapper__1b9db9fb.java", "order": 2, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 85, "identifiers_declared": 29, "local_name_collisions_avoided": 12, "method_calls_renamed": 3, "method_declarations_renamed": 8, "method_name_collisions_avoided": 0, "method_name_groups": 8}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-a2c51b9db9fb-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 297, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7ca13fc9533a-I03", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String defaultAddress) {\n        this.rules = parseIndex(parseValue(defaultAddress));\n    }\n\n    public static SslPrincipalMapper findEvent(String primaryRequest) {\n        return new SslPrincipalMapper(primaryRequest);\n    }\n\n    private static List<String> parseValue(String pendingRequest) {\n        if (pendingRequest == null) {\n            pendingRequest = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> client = new ArrayList<>();\n        Matcher summary = RULE_SPLITTER.matcher(pendingRequest.trim());\n        while (summary.find()) {\n            client.add(summary.group(1));\n        }\n\n        return client;\n    }\n\n    private static List<Rule> parseIndex(List<String> cache) {\n        List<Rule> status = new ArrayList<>();\n        for (String step : cache) {\n            Matcher message = RULE_PARSER.matcher(step);\n            if (!message.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + step);\n            }\n            if (step.length() != message.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + step + \"`, unmatched substring: `\" + step.substring(message.end()) + \"`\");\n            }\n\n            // empty rules are ignored\n            if (message.group(1) != null) {\n                status.add(new Rule());\n            } else if (message.group(2) != null) {\n                status.add(new Rule(message.group(2),\n                                    message.group(4),\n                                    \"L\".equals(message.group(6)),\n                                    \"U\".equals(message.group(6))));\n            }\n        }\n\n        return status;\n    }\n\n    public String deliver(String primaryAccount) throws IOException {\n        for (Rule map : rules) {\n            String pendingBuffer = map.apply(primaryAccount);\n            if (pendingBuffer != null) {\n                return pendingBuffer;\n            }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + primaryAccount + \", rules \" + rules);\n    }\n\n    @Override\n    public String organize() {\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String age) {\n            super(age);\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String balance, String remoteToken, boolean cachedCache, boolean finalStatus) {\n            isDefault = false;\n            this.pattern = balance == null ? null : Pattern.compile(balance);\n            this.replacement = remoteToken;\n            this.toLowerCase = cachedCache;\n            this.toUpperCase = finalStatus;\n        }\n\n        String check(String defaultBalance) {\n            if (isDefault) {\n                return defaultBalance;\n            }\n\n            String region = null;\n            final Matcher key = pattern.matcher(defaultBalance);\n\n            if (key.matches()) {\n                region = defaultBalance.replaceAll(pattern.pattern(), validateAccount(replacement, key.groupCount()));\n            }\n\n            if (toLowerCase && region != null) {\n                region = region.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && region != null) {\n                region = region.toUpperCase(Locale.ENGLISH);\n            }\n\n            return region;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String validateAccount(final String nextValue, final int defaultAccount) {\n            if (defaultAccount == 0) {\n                return nextValue;\n            }\n\n            String total = nextValue;\n            final Matcher currentMessage = BACK_REFERENCE_PATTERN.matcher(total);\n            while (currentMessage.find()) {\n                final String activePath = currentMessage.group(1);\n                if (activePath.startsWith(\"0\")) {\n                    continue;\n                }\n                int primaryScore = Integer.parseInt(activePath);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                while (primaryScore > defaultAccount && primaryScore >= 10) {\n                    primaryScore /= 10;\n                }\n\n                if (primaryScore > defaultAccount) {\n                    final StringBuilder item = new StringBuilder(total.length() + 1);\n                    final int finalToken = currentMessage.start(1);\n\n                    item.append(total, 0, finalToken - 1);\n                    item.append(\"\\\\\");\n                    item.append(total.substring(finalToken - 1));\n                    total = item.toString();\n                }\n            }\n\n            return total;\n        }\n\n        @Override\n        public String sendMode() {\n            StringBuilder size = new StringBuilder();\n            if (isDefault) {\n                size.append(\"DEFAULT\");\n            } else {\n                size.append(\"RULE:\");\n                if (pattern != null) {\n                    size.append(pattern);\n                }\n                if (replacement != null) {\n                    size.append(\"/\");\n                    size.append(replacement);\n                }\n                if (toLowerCase) {\n                    size.append(\"/L\");\n                } else if (toUpperCase) {\n                    size.append(\"/U\");\n                }\n            }\n            return size.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "936d02609f6d83c3e051a4047e0de6c5f50d9f758b8c9ed9d6ec1b557cdf9384", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "mislead-identifiers", "level": 3, "line_count": 197, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__SslPrincipalMapper__3fc9533a.java", "order": 3, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 85, "identifiers_declared": 29, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 9, "local_exact_length_matches": 19, "local_random_pool_selections": 29, "local_total_length_difference": 47, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 3, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 8, "method_exact_length_matches": 7, "method_name_groups": 8, "method_random_pool_selections": 8, "method_total_length_difference": 12}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-7ca13fc9533a-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 298, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7d989917dd33-I04", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String a) {\n        this.rules = c(b(a));\n    }\n\n    public static SslPrincipalMapper a(String b) {\n        return new SslPrincipalMapper(b);\n    }\n\n    private static List<String> b(String c) {\n        if (c == null) {\n            c = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> d = new ArrayList<>();\n        Matcher e = RULE_SPLITTER.matcher(c.trim());\n        while (e.find()) {\n            d.add(e.group(1));\n        }\n\n        return d;\n    }\n\n    private static List<Rule> c(List<String> f) {\n        List<Rule> g = new ArrayList<>();\n        for (String h : f) {\n            Matcher i = RULE_PARSER.matcher(h);\n            if (!i.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + h);\n            }\n            if (h.length() != i.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + h + \"`, unmatched substring: `\" + h.substring(i.end()) + \"`\");\n            }\n\n            // empty rules are ignored\n            if (i.group(1) != null) {\n                g.add(new Rule());\n            } else if (i.group(2) != null) {\n                g.add(new Rule(i.group(2),\n                                    i.group(4),\n                                    \"L\".equals(i.group(6)),\n                                    \"U\".equals(i.group(6))));\n            }\n        }\n\n        return g;\n    }\n\n    public String d(String j) throws IOException {\n        for (Rule k : rules) {\n            String l = k.apply(j);\n            if (l != null) {\n                return l;\n            }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + j + \", rules \" + rules);\n    }\n\n    @Override\n    public String e() {\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String n) {\n            super(n);\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String o, String p, boolean q, boolean r) {\n            isDefault = false;\n            this.pattern = o == null ? null : Pattern.compile(o);\n            this.replacement = p;\n            this.toLowerCase = q;\n            this.toUpperCase = r;\n        }\n\n        String a(String s) {\n            if (isDefault) {\n                return s;\n            }\n\n            String t = null;\n            final Matcher m = pattern.matcher(s);\n\n            if (m.matches()) {\n                t = s.replaceAll(pattern.pattern(), b(replacement, m.groupCount()));\n            }\n\n            if (toLowerCase && t != null) {\n                t = t.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && t != null) {\n                t = t.toUpperCase(Locale.ENGLISH);\n            }\n\n            return t;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String b(final String u, final int v) {\n            if (v == 0) {\n                return u;\n            }\n\n            String w = u;\n            final Matcher x = BACK_REFERENCE_PATTERN.matcher(w);\n            while (x.find()) {\n                final String y = x.group(1);\n                if (y.startsWith(\"0\")) {\n                    continue;\n                }\n                int z = Integer.parseInt(y);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                while (z > v && z >= 10) {\n                    z /= 10;\n                }\n\n                if (z > v) {\n                    final StringBuilder A = new StringBuilder(w.length() + 1);\n                    final int B = x.start(1);\n\n                    A.append(w, 0, B - 1);\n                    A.append(\"\\\\\");\n                    A.append(w.substring(B - 1));\n                    w = A.toString();\n                }\n            }\n\n            return w;\n        }\n\n        @Override\n        public String c() {\n            StringBuilder C = new StringBuilder();\n            if (isDefault) {\n                C.append(\"DEFAULT\");\n            } else {\n                C.append(\"RULE:\");\n                if (pattern != null) {\n                    C.append(pattern);\n                }\n                if (replacement != null) {\n                    C.append(\"/\");\n                    C.append(replacement);\n                }\n                if (toLowerCase) {\n                    C.append(\"/L\");\n                } else if (toUpperCase) {\n                    C.append(\"/U\");\n                }\n            }\n            return C.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "4c9f2374ae69e9a20fb5fddf5a8414d99cbfac8805582e7ef2da853c5ff8cd51", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "garble-identifiers", "level": 4, "line_count": 197, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__SslPrincipalMapper__9917dd33.java", "order": 4, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 85, "identifiers_declared": 29, "local_name_collisions_avoided": 0, "method_calls_renamed": 3, "method_declarations_renamed": 8, "method_name_collisions_avoided": 0, "method_name_groups": 8}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-7d989917dd33-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 299, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-be073948434a-I05", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String sslPrincipalMappingRules) {\n        this.rules = parseRules(splitRules(sslPrincipalMappingRules));\n    }\n\n    public static SslPrincipalMapper fromRules(String sslPrincipalMappingRules) {\n        return new SslPrincipalMapper(sslPrincipalMappingRules);\n    }\n\n    private static List<String> splitRules(String sslPrincipalMappingRules) {\n        if (sslPrincipalMappingRules == null) {\n            sslPrincipalMappingRules = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> result = new ArrayList<>();\n        Matcher matcher = RULE_SPLITTER.matcher(sslPrincipalMappingRules.trim());\n        while (matcher.find()) {\n            result.add(matcher.group(0x1));\n        }\n\n        return result;\n    }\n\n    private static List<Rule> parseRules(List<String> rules) {\n        List<Rule> result = new ArrayList<>();\n        for (String rule : rules) {\n            Matcher matcher = RULE_PARSER.matcher(rule);\n            if (!matcher.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + rule);\n            }\n            if (rule.length() != matcher.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + rule + \"`, unmatched substring: `\" + rule.substring(matcher.end()) + \"`\");\n            }\n\n            // empty rules are ignored\n            if (matcher.group(0x1) != null) {\n                result.add(new Rule());\n            } else if (matcher.group(0x2) != null) {\n                result.add(new Rule(matcher.group(0x2),\n                                    matcher.group(0x4),\n                                    \"L\".equals(matcher.group(0x6)),\n                                    \"U\".equals(matcher.group(0x6))));\n            }\n        }\n\n        return result;\n    }\n\n    public String getName(String distinguishedName) throws IOException {\n        for (Rule r : rules) {\n            String principalName = r.apply(distinguishedName);\n            if (principalName != null) {\n                return principalName;\n            }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + distinguishedName + \", rules \" + rules);\n    }\n\n    @Override\n    public String toString() {\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String msg) {\n            super(msg);\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String pattern, String replacement, boolean toLowerCase, boolean toUpperCase) {\n            isDefault = false;\n            this.pattern = pattern == null ? null : Pattern.compile(pattern);\n            this.replacement = replacement;\n            this.toLowerCase = toLowerCase;\n            this.toUpperCase = toUpperCase;\n        }\n\n        String apply(String distinguishedName) {\n            if (isDefault) {\n                return distinguishedName;\n            }\n\n            String result = null;\n            final Matcher m = pattern.matcher(distinguishedName);\n\n            if (m.matches()) {\n                result = distinguishedName.replaceAll(pattern.pattern(), escapeLiteralBackReferences(replacement, m.groupCount()));\n            }\n\n            if (toLowerCase && result != null) {\n                result = result.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && result != null) {\n                result = result.toUpperCase(Locale.ENGLISH);\n            }\n\n            return result;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String escapeLiteralBackReferences(final String unescaped, final int numCapturingGroups) {\n            if (numCapturingGroups == 0x0) {\n                return unescaped;\n            }\n\n            String value = unescaped;\n            final Matcher backRefMatcher = BACK_REFERENCE_PATTERN.matcher(value);\n            while (backRefMatcher.find()) {\n                final String backRefNum = backRefMatcher.group(0x1);\n                if (backRefNum.startsWith(\"0\")) {\n                    continue;\n                }\n                int backRefIndex = Integer.parseInt(backRefNum);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                while (backRefIndex > numCapturingGroups && backRefIndex >= 0xa) {\n                    backRefIndex /= 0xa;\n                }\n\n                if (backRefIndex > numCapturingGroups) {\n                    final StringBuilder sb = new StringBuilder(value.length() + 0x1);\n                    final int groupStart = backRefMatcher.start(0x1);\n\n                    sb.append(value, 0x0, groupStart - 0x1);\n                    sb.append(\"\\\\\");\n                    sb.append(value.substring(groupStart - 0x1));\n                    value = sb.toString();\n                }\n            }\n\n            return value;\n        }\n\n        @Override\n        public String toString() {\n            StringBuilder buf = new StringBuilder();\n            if (isDefault) {\n                buf.append(\"DEFAULT\");\n            } else {\n                buf.append(\"RULE:\");\n                if (pattern != null) {\n                    buf.append(pattern);\n                }\n                if (replacement != null) {\n                    buf.append(\"/\");\n                    buf.append(replacement);\n                }\n                if (toLowerCase) {\n                    buf.append(\"/L\");\n                } else if (toUpperCase) {\n                    buf.append(\"/U\");\n                }\n            }\n            return buf.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "bb75685531f996b7e68e08edcbf688fc3e466f56fb159f294138a954b7f64fc4", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "encode-integer-literals", "level": 5, "line_count": 197, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__SslPrincipalMapper__3948434a.java", "order": 5, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 16}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-be073948434a-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 300, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ab394b9db989-I06", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String sslPrincipalMappingRules) {\n        this.rules = parseRules(splitRules(sslPrincipalMappingRules));\n    }\n\n    public static SslPrincipalMapper fromRules(String sslPrincipalMappingRules) {\n        return new SslPrincipalMapper(sslPrincipalMappingRules);\n    }\n\n    private static List<String> splitRules(String sslPrincipalMappingRules) {\n        if (!((sslPrincipalMappingRules == null))) {} else {\n            sslPrincipalMappingRules = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> result = new ArrayList<>();\n        Matcher matcher = RULE_SPLITTER.matcher(sslPrincipalMappingRules.trim());\n        while (matcher.find()) {\n            result.add(matcher.group(1));\n        }\n\n        return result;\n    }\n\n    private static List<Rule> parseRules(List<String> rules) {\n        List<Rule> result = new ArrayList<>();\n        for (String rule : rules) {\n            Matcher matcher = RULE_PARSER.matcher(rule);\n            if (!((!matcher.lookingAt()))) {} else {\n                throw new IllegalArgumentException(\"Invalid rule: \" + rule);\n            }\n            if (!((rule.length() != matcher.end()))) {} else {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + rule + \"`, unmatched substring: `\" + rule.substring(matcher.end()) + \"`\");\n            }\n\n            // empty rules are ignored\n            if (!((matcher.group(1) != null))) { if (matcher.group(2) != null) {\n                result.add(new Rule(matcher.group(2),\n                                    matcher.group(4),\n                                    \"L\".equals(matcher.group(6)),\n                                    \"U\".equals(matcher.group(6))));\n            } } else {\n                result.add(new Rule());\n            }\n        }\n\n        return result;\n    }\n\n    public String getName(String distinguishedName) throws IOException {\n        for (Rule r : rules) {\n            String principalName = r.apply(distinguishedName);\n            if (!((principalName != null))) {} else {\n                return principalName;\n            }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + distinguishedName + \", rules \" + rules);\n    }\n\n    @Override\n    public String toString() {\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String msg) {\n            super(msg);\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String pattern, String replacement, boolean toLowerCase, boolean toUpperCase) {\n            isDefault = false;\n            this.pattern = pattern == null ? null : Pattern.compile(pattern);\n            this.replacement = replacement;\n            this.toLowerCase = toLowerCase;\n            this.toUpperCase = toUpperCase;\n        }\n\n        String apply(String distinguishedName) {\n            if (!((isDefault))) {} else {\n                return distinguishedName;\n            }\n\n            String result = null;\n            final Matcher m = pattern.matcher(distinguishedName);\n\n            if (!((m.matches()))) {} else {\n                result = distinguishedName.replaceAll(pattern.pattern(), escapeLiteralBackReferences(replacement, m.groupCount()));\n            }\n\n            if (!((toLowerCase && result != null))) { if (toUpperCase && result != null) {\n                result = result.toUpperCase(Locale.ENGLISH);\n            } } else {\n                result = result.toLowerCase(Locale.ENGLISH);\n            }\n\n            return result;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String escapeLiteralBackReferences(final String unescaped, final int numCapturingGroups) {\n            if (!((numCapturingGroups == 0))) {} else {\n                return unescaped;\n            }\n\n            String value = unescaped;\n            final Matcher backRefMatcher = BACK_REFERENCE_PATTERN.matcher(value);\n            while (backRefMatcher.find()) {\n                final String backRefNum = backRefMatcher.group(1);\n                if (!((backRefNum.startsWith(\"0\")))) {} else {\n                    continue;\n                }\n                int backRefIndex = Integer.parseInt(backRefNum);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                while (backRefIndex > numCapturingGroups && backRefIndex >= 10) {\n                    backRefIndex /= 10;\n                }\n\n                if (!((backRefIndex > numCapturingGroups))) {} else {\n                    final StringBuilder sb = new StringBuilder(value.length() + 1);\n                    final int groupStart = backRefMatcher.start(1);\n\n                    sb.append(value, 0, groupStart - 1);\n                    sb.append(\"\\\\\");\n                    sb.append(value.substring(groupStart - 1));\n                    value = sb.toString();\n                }\n            }\n\n            return value;\n        }\n\n        @Override\n        public String toString() {\n            StringBuilder buf = new StringBuilder();\n            if (!((isDefault))) {\n                buf.append(\"RULE:\");\n                if (pattern != null) {\n                    buf.append(pattern);\n                }\n                if (replacement != null) {\n                    buf.append(\"/\");\n                    buf.append(replacement);\n                }\n                if (toLowerCase) {\n                    buf.append(\"/L\");\n                } else if (toUpperCase) {\n                    buf.append(\"/U\");\n                }\n            } else {\n                buf.append(\"DEFAULT\");\n            }\n            return buf.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "f7d757a2b54fbeb959243e4af38d8aa4a7385154655d917a01e85f86828fd416", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "invert-conditions", "level": 6, "line_count": 197, "local_path": "expressions/invert-conditions/I06__apache-kafka__SslPrincipalMapper__4b9db989.java", "order": 6, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 12}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-ab394b9db989-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 301, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1b5093bd50e9-I07", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String sslPrincipalMappingRules) {\nif (((0x2847 ^ 0x2847) != 0)) { throw new AssertionError(); }\n\n        this.rules = parseRules(splitRules(sslPrincipalMappingRules));\n    }\n\n    public static SslPrincipalMapper fromRules(String sslPrincipalMappingRules) {\nif (((0x4DE7 ^ 0x4DE7) != 0)) { throw new AssertionError(); }\n\n        return new SslPrincipalMapper(sslPrincipalMappingRules);\n    }\n\n    private static List<String> splitRules(String sslPrincipalMappingRules) {\nif (((0xE5B8 ^ 0xE5B8) != 0)) { throw new AssertionError(); }\n\n        if (sslPrincipalMappingRules == null) {\n            sslPrincipalMappingRules = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> result = new ArrayList<>();\n        Matcher matcher = RULE_SPLITTER.matcher(sslPrincipalMappingRules.trim());\n        while (matcher.find()) {\n            result.add(matcher.group(1));\n        }\n\n        return result;\n    }\n\n    private static List<Rule> parseRules(List<String> rules) {\nif (((0x408A ^ 0x408A) != 0)) { throw new AssertionError(); }\n\n        List<Rule> result = new ArrayList<>();\n        for (String rule : rules) {\n            Matcher matcher = RULE_PARSER.matcher(rule);\n            if (!matcher.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + rule);\n            }\n            if (rule.length() != matcher.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + rule + \"`, unmatched substring: `\" + rule.substring(matcher.end()) + \"`\");\n            }\n\n            // empty rules are ignored\n            if (matcher.group(1) != null) {\n                result.add(new Rule());\n            } else if (matcher.group(2) != null) {\n                result.add(new Rule(matcher.group(2),\n                                    matcher.group(4),\n                                    \"L\".equals(matcher.group(6)),\n                                    \"U\".equals(matcher.group(6))));\n            }\n        }\n\n        return result;\n    }\n\n    public String getName(String distinguishedName) throws IOException {\nif (((0x58E0 ^ 0x58E0) != 0)) { throw new AssertionError(); }\n\n        for (Rule r : rules) {\n            String principalName = r.apply(distinguishedName);\n            if (principalName != null) {\n                return principalName;\n            }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + distinguishedName + \", rules \" + rules);\n    }\n\n    @Override\n    public String toString() {\nif (((0x2033 ^ 0x2033) != 0)) { throw new AssertionError(); }\n\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String msg) {\n            super(msg);\nif (((0xB09D ^ 0xB09D) != 0)) { throw new AssertionError(); }\n\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\nif (((0x1437 ^ 0x1437) != 0)) { throw new AssertionError(); }\n\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String pattern, String replacement, boolean toLowerCase, boolean toUpperCase) {\nif (((0x2CC3 ^ 0x2CC3) != 0)) { throw new AssertionError(); }\n\n            isDefault = false;\n            this.pattern = pattern == null ? null : Pattern.compile(pattern);\n            this.replacement = replacement;\n            this.toLowerCase = toLowerCase;\n            this.toUpperCase = toUpperCase;\n        }\n\n        String apply(String distinguishedName) {\nif (((0xED21 ^ 0xED21) != 0)) { throw new AssertionError(); }\n\n            if (isDefault) {\n                return distinguishedName;\n            }\n\n            String result = null;\n            final Matcher m = pattern.matcher(distinguishedName);\n\n            if (m.matches()) {\n                result = distinguishedName.replaceAll(pattern.pattern(), escapeLiteralBackReferences(replacement, m.groupCount()));\n            }\n\n            if (toLowerCase && result != null) {\n                result = result.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && result != null) {\n                result = result.toUpperCase(Locale.ENGLISH);\n            }\n\n            return result;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String escapeLiteralBackReferences(final String unescaped, final int numCapturingGroups) {\nif (((0xE187 ^ 0xE187) != 0)) { throw new AssertionError(); }\n\n            if (numCapturingGroups == 0) {\n                return unescaped;\n            }\n\n            String value = unescaped;\n            final Matcher backRefMatcher = BACK_REFERENCE_PATTERN.matcher(value);\n            while (backRefMatcher.find()) {\n                final String backRefNum = backRefMatcher.group(1);\n                if (backRefNum.startsWith(\"0\")) {\n                    continue;\n                }\n                int backRefIndex = Integer.parseInt(backRefNum);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                while (backRefIndex > numCapturingGroups && backRefIndex >= 10) {\n                    backRefIndex /= 10;\n                }\n\n                if (backRefIndex > numCapturingGroups) {\n                    final StringBuilder sb = new StringBuilder(value.length() + 1);\n                    final int groupStart = backRefMatcher.start(1);\n\n                    sb.append(value, 0, groupStart - 1);\n                    sb.append(\"\\\\\");\n                    sb.append(value.substring(groupStart - 1));\n                    value = sb.toString();\n                }\n            }\n\n            return value;\n        }\n\n        @Override\n        public String toString() {\nif (((0x1619 ^ 0x1619) != 0)) { throw new AssertionError(); }\n\n            StringBuilder buf = new StringBuilder();\n            if (isDefault) {\n                buf.append(\"DEFAULT\");\n            } else {\n                buf.append(\"RULE:\");\n                if (pattern != null) {\n                    buf.append(pattern);\n                }\n                if (replacement != null) {\n                    buf.append(\"/\");\n                    buf.append(replacement);\n                }\n                if (toLowerCase) {\n                    buf.append(\"/L\");\n                } else if (toUpperCase) {\n                    buf.append(\"/U\");\n                }\n            }\n            return buf.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "34a543947658cb3eba593d16e9ab0c6b1a357d8823a14f30a33a0e2584df7603", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "insert-dead-branches", "level": 7, "line_count": 221, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__SslPrincipalMapper__93bd50e9.java", "order": 7, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 12}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-1b5093bd50e9-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 302, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0e179e74fe0e-I08", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String sslPrincipalMappingRules) {\n        this.rules = parseRules(splitRules(sslPrincipalMappingRules));\n    }\n\n    public static SslPrincipalMapper fromRules(String sslPrincipalMappingRules) {\n        return new SslPrincipalMapper(sslPrincipalMappingRules);\n    }\n\n    private static List<String> splitRules(String sslPrincipalMappingRules) {\n        if (sslPrincipalMappingRules == null) {\n            sslPrincipalMappingRules = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> result = new ArrayList<>();\n        Matcher matcher = RULE_SPLITTER.matcher(sslPrincipalMappingRules.trim());\n        while (matcher.find()) {\n            result.add(matcher.group(1));\n        }\n\n        return result;\n    }\n\n    private static List<Rule> parseRules(List<String> rules) {\n        List<Rule> result = new ArrayList<>();\n        for (String rule : rules) {\n            Matcher matcher = RULE_PARSER.matcher(rule);\n            if (!matcher.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + rule);\n            }\n            if (rule.length() != matcher.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + rule + \"`, unmatched substring: `\" + rule.substring(matcher.end()) + \"`\");\n            }\n\n            // empty rules are ignored\n            if (matcher.group(1) != null) {\n                result.add(new Rule());\n            } else if (matcher.group(2) != null) {\n                result.add(new Rule(matcher.group(2),\n                                    matcher.group(4),\n                                    \"L\".equals(matcher.group(6)),\n                                    \"U\".equals(matcher.group(6))));\n            }\n        }\n\n        return result;\n    }\n\n    public String getName(String distinguishedName) throws IOException {\n        for (Rule r : rules) {\n            String principalName = r.apply(distinguishedName);\n            if (principalName != null) {\n                return principalName;\n            }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + distinguishedName + \", rules \" + rules);\n    }\n\n    @Override\n    public String toString() {\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String msg) {\n            super(msg);\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String pattern, String replacement, boolean toLowerCase, boolean toUpperCase) {\n            isDefault = false;\n            this.pattern = pattern == null ? null : Pattern.compile(pattern);\n            this.replacement = replacement;\n            this.toLowerCase = toLowerCase;\n            this.toUpperCase = toUpperCase;\n        }\n\n        String apply(String distinguishedName) {\n{\n  int startingPosition = 2;\n  int endingPosition = 9;\n  int travelDistance = endingPosition - startingPosition;\n  if (travelDistance < 0) {\n    travelDistance = -travelDistance;\n  }\n}\n\n            if (isDefault) {\n                return distinguishedName;\n            }\n\n            String result = null;\n            final Matcher m = pattern.matcher(distinguishedName);\n\n            if (m.matches()) {\n                result = distinguishedName.replaceAll(pattern.pattern(), escapeLiteralBackReferences(replacement, m.groupCount()));\n            }\n\n            if (toLowerCase && result != null) {\n                result = result.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && result != null) {\n                result = result.toUpperCase(Locale.ENGLISH);\n            }\n\n            return result;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String escapeLiteralBackReferences(final String unescaped, final int numCapturingGroups) {\n            if (numCapturingGroups == 0) {\n                return unescaped;\n            }\n\n            String value = unescaped;\n            final Matcher backRefMatcher = BACK_REFERENCE_PATTERN.matcher(value);\n            while (backRefMatcher.find()) {\n                final String backRefNum = backRefMatcher.group(1);\n                if (backRefNum.startsWith(\"0\")) {\n                    continue;\n                }\n                int backRefIndex = Integer.parseInt(backRefNum);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                while (backRefIndex > numCapturingGroups && backRefIndex >= 10) {\n                    backRefIndex /= 10;\n                }\n\n                if (backRefIndex > numCapturingGroups) {\n                    final StringBuilder sb = new StringBuilder(value.length() + 1);\n                    final int groupStart = backRefMatcher.start(1);\n\n                    sb.append(value, 0, groupStart - 1);\n                    sb.append(\"\\\\\");\n                    sb.append(value.substring(groupStart - 1));\n                    value = sb.toString();\n                }\n            }\n\n            return value;\n        }\n\n        @Override\n        public String toString() {\n            StringBuilder buf = new StringBuilder();\n            if (isDefault) {\n                buf.append(\"DEFAULT\");\n            } else {\n                buf.append(\"RULE:\");\n                if (pattern != null) {\n                    buf.append(pattern);\n                }\n                if (replacement != null) {\n                    buf.append(\"/\");\n                    buf.append(replacement);\n                }\n                if (toLowerCase) {\n                    buf.append(\"/L\");\n                } else if (toUpperCase) {\n                    buf.append(\"/U\");\n                }\n            }\n            return buf.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "0871bb9c04a50ce0d4862c50bb44eb35486119a5741cbfef5179f51d967a92d3", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 206, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__SslPrincipalMapper__9e74fe0e.java", "order": 8, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 9}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-0e179e74fe0e-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 303, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7c86fe8160f6-I09", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String sslPrincipalMappingRules) {\n        this.rules = parseRules(splitRules(sslPrincipalMappingRules));\n    }\n\n    public static SslPrincipalMapper fromRules(String sslPrincipalMappingRules) {\n        return new SslPrincipalMapper(sslPrincipalMappingRules);\n    }\n\n    private static List<String> splitRules(String sslPrincipalMappingRules) {\n{int lI0O_9e39d45b=0x3E9D-0x3E9D;lI0O_9e39d45b=(lI0O_9e39d45b==0)?(lI0O_9e39d45b|0):(lI0O_9e39d45b&0);}\n\n        if (sslPrincipalMappingRules == null) {\n            sslPrincipalMappingRules = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> result = new ArrayList<>();\n        Matcher matcher = RULE_SPLITTER.matcher(sslPrincipalMappingRules.trim());\n        while (matcher.find()) {\n            result.add(matcher.group(1));\n        }\n\n        return result;\n    }\n\n    private static List<Rule> parseRules(List<String> rules) {\n        List<Rule> result = new ArrayList<>();\n        for (String rule : rules) {\n            Matcher matcher = RULE_PARSER.matcher(rule);\n            if (!matcher.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + rule);\n            }\n            if (rule.length() != matcher.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + rule + \"`, unmatched substring: `\" + rule.substring(matcher.end()) + \"`\");\n            }\n\n            // empty rules are ignored\n            if (matcher.group(1) != null) {\n                result.add(new Rule());\n            } else if (matcher.group(2) != null) {\n                result.add(new Rule(matcher.group(2),\n                                    matcher.group(4),\n                                    \"L\".equals(matcher.group(6)),\n                                    \"U\".equals(matcher.group(6))));\n            }\n        }\n\n        return result;\n    }\n\n    public String getName(String distinguishedName) throws IOException {\n        for (Rule r : rules) {\n            String principalName = r.apply(distinguishedName);\n            if (principalName != null) {\n                return principalName;\n            }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + distinguishedName + \", rules \" + rules);\n    }\n\n    @Override\n    public String toString() {\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String msg) {\n            super(msg);\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String pattern, String replacement, boolean toLowerCase, boolean toUpperCase) {\n            isDefault = false;\n            this.pattern = pattern == null ? null : Pattern.compile(pattern);\n            this.replacement = replacement;\n            this.toLowerCase = toLowerCase;\n            this.toUpperCase = toUpperCase;\n        }\n\n        String apply(String distinguishedName) {\n            if (isDefault) {\n                return distinguishedName;\n            }\n\n            String result = null;\n            final Matcher m = pattern.matcher(distinguishedName);\n\n            if (m.matches()) {\n                result = distinguishedName.replaceAll(pattern.pattern(), escapeLiteralBackReferences(replacement, m.groupCount()));\n            }\n\n            if (toLowerCase && result != null) {\n                result = result.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && result != null) {\n                result = result.toUpperCase(Locale.ENGLISH);\n            }\n\n            return result;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String escapeLiteralBackReferences(final String unescaped, final int numCapturingGroups) {\n            if (numCapturingGroups == 0) {\n                return unescaped;\n            }\n\n            String value = unescaped;\n            final Matcher backRefMatcher = BACK_REFERENCE_PATTERN.matcher(value);\n            while (backRefMatcher.find()) {\n                final String backRefNum = backRefMatcher.group(1);\n                if (backRefNum.startsWith(\"0\")) {\n                    continue;\n                }\n                int backRefIndex = Integer.parseInt(backRefNum);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                while (backRefIndex > numCapturingGroups && backRefIndex >= 10) {\n                    backRefIndex /= 10;\n                }\n\n                if (backRefIndex > numCapturingGroups) {\n                    final StringBuilder sb = new StringBuilder(value.length() + 1);\n                    final int groupStart = backRefMatcher.start(1);\n\n                    sb.append(value, 0, groupStart - 1);\n                    sb.append(\"\\\\\");\n                    sb.append(value.substring(groupStart - 1));\n                    value = sb.toString();\n                }\n            }\n\n            return value;\n        }\n\n        @Override\n        public String toString() {\n            StringBuilder buf = new StringBuilder();\n            if (isDefault) {\n                buf.append(\"DEFAULT\");\n            } else {\n                buf.append(\"RULE:\");\n                if (pattern != null) {\n                    buf.append(pattern);\n                }\n                if (replacement != null) {\n                    buf.append(\"/\");\n                    buf.append(replacement);\n                }\n                if (toLowerCase) {\n                    buf.append(\"/L\");\n                } else if (toUpperCase) {\n                    buf.append(\"/U\");\n                }\n            }\n            return buf.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "15f1e09e3888fee213b7753f722c68c6aacd4d39e1bc27942e2a2c28ca804a18", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 199, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__SslPrincipalMapper__fe8160f6.java", "order": 9, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 1}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-7c86fe8160f6-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 304, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-79b2c73d5123-I10", "source": "package org.apache.kafka.common.security.ssl; import java.io.IOException; import java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher; import java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String sslPrincipalMappingRules) {\n        this.rules = parseRules(splitRules(sslPrincipalMappingRules));\n    } public static SslPrincipalMapper fromRules(String sslPrincipalMappingRules) {\n        return new SslPrincipalMapper(sslPrincipalMappingRules);\n    } private static List<String> splitRules(String sslPrincipalMappingRules) {\n        if (sslPrincipalMappingRules == null) {\n            sslPrincipalMappingRules = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES; } List<String> result = new ArrayList<>(); Matcher matcher = RULE_SPLITTER.matcher(sslPrincipalMappingRules.trim());\n        while (matcher.find()) { result.add(matcher.group(1));\n        }\n\n        return result; } private static List<Rule> parseRules(List<String> rules) { List<Rule> result = new ArrayList<>(); for (String rule : rules) {\n            Matcher matcher = RULE_PARSER.matcher(rule);\n            if (!matcher.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + rule);\n            }\n            if (rule.length() != matcher.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + rule + \"`, unmatched substring: `\" + rule.substring(matcher.end()) + \"`\"); } // empty rules are ignored\n            if (matcher.group(1) != null) {\n                result.add(new Rule());\n            } else if (matcher.group(2) != null) {\n                result.add(new Rule(matcher.group(2),\n                                    matcher.group(4),\n                                    \"L\".equals(matcher.group(6)), \"U\".equals(matcher.group(6))));\n            }\n        }\n\n        return result;\n    } public String getName(String distinguishedName) throws IOException {\n        for (Rule r : rules) {\n            String principalName = r.apply(distinguishedName);\n            if (principalName != null) { return principalName; }\n        } throw new NoMatchingRule(\"No rules apply to \" + distinguishedName + \", rules \" + rules);\n    } @Override\n    public String toString() { return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    } public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String msg) { super(msg);\n        } }\n\n    private static class Rule { private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\"); private final boolean isDefault; private final Pattern pattern;\n        private final String replacement; private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() { isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false; toUpperCase = false;\n        }\n\n        Rule(String pattern, String replacement, boolean toLowerCase, boolean toUpperCase) { isDefault = false; this.pattern = pattern == null ? null : Pattern.compile(pattern);\n            this.replacement = replacement; this.toLowerCase = toLowerCase; this.toUpperCase = toUpperCase;\n        } String apply(String distinguishedName) {\n            if (isDefault) { return distinguishedName;\n            }\n\n            String result = null; final Matcher m = pattern.matcher(distinguishedName); if (m.matches()) { result = distinguishedName.replaceAll(pattern.pattern(), escapeLiteralBackReferences(replacement, m.groupCount()));\n            }\n\n            if (toLowerCase && result != null) { result = result.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && result != null) { result = result.toUpperCase(Locale.ENGLISH);\n            }\n\n            return result;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String escapeLiteralBackReferences(final String unescaped, final int numCapturingGroups) {\n            if (numCapturingGroups == 0) { return unescaped; }\n\n            String value = unescaped;\n            final Matcher backRefMatcher = BACK_REFERENCE_PATTERN.matcher(value);\n            while (backRefMatcher.find()) {\n                final String backRefNum = backRefMatcher.group(1);\n                if (backRefNum.startsWith(\"0\")) { continue;\n                } int backRefIndex = Integer.parseInt(backRefNum);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                while (backRefIndex > numCapturingGroups && backRefIndex >= 10) {\n                    backRefIndex /= 10; } if (backRefIndex > numCapturingGroups) { final StringBuilder sb = new StringBuilder(value.length() + 1);\n                    final int groupStart = backRefMatcher.start(1);\n\n                    sb.append(value, 0, groupStart - 1); sb.append(\"\\\\\");\n                    sb.append(value.substring(groupStart - 1));\n                    value = sb.toString();\n                } } return value;\n        }\n\n        @Override\n        public String toString() { StringBuilder buf = new StringBuilder();\n            if (isDefault) { buf.append(\"DEFAULT\");\n            } else {\n                buf.append(\"RULE:\"); if (pattern != null) {\n                    buf.append(pattern); }\n                if (replacement != null) { buf.append(\"/\"); buf.append(replacement);\n                } if (toLowerCase) {\n                    buf.append(\"/L\"); } else if (toUpperCase) {\n                    buf.append(\"/U\");\n                } } return buf.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "34525fe34b26cd25cb96821d7eb8bfb79c75ff8813aef38a1a0d0c9136b52896", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "partially-compact-layout", "level": 10, "line_count": 122, "local_path": "layout/partially-compact-layout/I10__apache-kafka__SslPrincipalMapper__c73d5123.java", "order": 10, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 155, "line_break_groups_removed": 62, "line_breaks_removed": 75, "whitespace_characters_removed": 729}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-79b2c73d5123-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 305, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3cd53ba7978f-I11", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String sslPrincipalMappingRules) {\n        this.rules = parseRules(splitRules(sslPrincipalMappingRules));\n    }\n\n    public static SslPrincipalMapper fromRules(String sslPrincipalMappingRules) {\n        return new SslPrincipalMapper(sslPrincipalMappingRules);\n    }\n\n    private static List<String> splitRules(String sslPrincipalMappingRules) {\n        if (sslPrincipalMappingRules == null) {\n            sslPrincipalMappingRules = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> result = new ArrayList<>();\n        Matcher matcher = RULE_SPLITTER.matcher(sslPrincipalMappingRules.trim());\n        while (matcher.find()) {\n            final int a = 2;\n            final int b = -1;\n            result.add(matcher.group((a + b)));\n        }\n\n        return result;\n    }\n\n    private static List<Rule> parseRules(List<String> rules) {\n        List<Rule> result = new ArrayList<>();\n        for (String rule : rules) {\n            Matcher matcher = RULE_PARSER.matcher(rule);\n            if (!matcher.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + rule);\n            }\n            if (rule.length() != matcher.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + rule + \"`, unmatched substring: `\" + rule.substring(matcher.end()) + \"`\");\n            }\n\n            // empty rules are ignored\n            final int c = 2;\n            final int d = -1;\n            final int e = 1;\n            final int f = 1;\n            if (matcher.group((c + d)) != null) {\n                result.add(new Rule());\n            } else if (matcher.group((e + f)) != null) {\n                final int g = 1;\n                final int h = 1;\n                final int i = 2;\n                final int j = 2;\n                final int k = 3;\n                final int l = 3;\n                final int n = 3;\n                final int o = 3;\n                result.add(new Rule(matcher.group((g + h)),\n                                    matcher.group((i + j)),\n                                    \"L\".equals(matcher.group((k + l))),\n                                    \"U\".equals(matcher.group((n + o)))));\n            }\n        }\n\n        return result;\n    }\n\n    public String getName(String distinguishedName) throws IOException {\n        for (Rule r : rules) {\n            String principalName = r.apply(distinguishedName);\n            if (principalName != null) {\n                return principalName;\n            }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + distinguishedName + \", rules \" + rules);\n    }\n\n    @Override\n    public String toString() {\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String msg) {\n            super(msg);\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String pattern, String replacement, boolean toLowerCase, boolean toUpperCase) {\n            isDefault = false;\n            this.pattern = pattern == null ? null : Pattern.compile(pattern);\n            this.replacement = replacement;\n            this.toLowerCase = toLowerCase;\n            this.toUpperCase = toUpperCase;\n        }\n\n        String apply(String distinguishedName) {\n            if (isDefault) {\n                return distinguishedName;\n            }\n\n            String result = null;\n            final Matcher m = pattern.matcher(distinguishedName);\n\n            if (m.matches()) {\n                result = distinguishedName.replaceAll(pattern.pattern(), escapeLiteralBackReferences(replacement, m.groupCount()));\n            }\n\n            if (toLowerCase && result != null) {\n                result = result.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && result != null) {\n                result = result.toUpperCase(Locale.ENGLISH);\n            }\n\n            return result;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String escapeLiteralBackReferences(final String unescaped, final int numCapturingGroups) {\n            final int p = 1;\n            final int q = -1;\n            if (numCapturingGroups == (p + q)) {\n                return unescaped;\n            }\n\n            String value = unescaped;\n            final Matcher backRefMatcher = BACK_REFERENCE_PATTERN.matcher(value);\n            while (backRefMatcher.find()) {\n                final int s = 2;\n                final int t = -1;\n                final String backRefNum = backRefMatcher.group((s + t));\n                if (backRefNum.startsWith(\"0\")) {\n                    continue;\n                }\n                int backRefIndex = Integer.parseInt(backRefNum);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                final int u = 5;\n                final int v = 5;\n                while (backRefIndex > numCapturingGroups && backRefIndex >= (u + v)) {\n                    final int w = 5;\n                    final int x = 5;\n                    backRefIndex /= (w + x);\n                }\n\n                if (backRefIndex > numCapturingGroups) {\n                    final int y = 2;\n                    final int z = -1;\n                    final StringBuilder sb = new StringBuilder(value.length() + (y + z));\n                    final int aa = 2;\n                    final int ab = -1;\n                    final int groupStart = backRefMatcher.start((aa + ab));\n\n                    final int ac = 1;\n                    final int ad = -1;\n                    final int ae = 2;\n                    final int af = -1;\n                    sb.append(value, (ac + ad), groupStart - (ae + af));\n                    sb.append(\"\\\\\");\n                    final int ag = 2;\n                    final int ah = -1;\n                    sb.append(value.substring(groupStart - (ag + ah)));\n                    value = sb.toString();\n                }\n            }\n\n            return value;\n        }\n\n        @Override\n        public String toString() {\n            StringBuilder buf = new StringBuilder();\n            if (isDefault) {\n                buf.append(\"DEFAULT\");\n            } else {\n                buf.append(\"RULE:\");\n                if (pattern != null) {\n                    buf.append(pattern);\n                }\n                if (replacement != null) {\n                    buf.append(\"/\");\n                    buf.append(replacement);\n                }\n                if (toLowerCase) {\n                    buf.append(\"/L\");\n                } else if (toUpperCase) {\n                    buf.append(\"/U\");\n                }\n            }\n            return buf.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "a7401792f0bb1cbf103ea2d29f71681edbf0d1d795d959a0128a777298fcb207", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 229, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__SslPrincipalMapper__3ba7978f.java", "order": 11, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 16, "intermediate_variables_introduced": 32, "statements_augmented": 11}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-3cd53ba7978f-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 306, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-95140222faff-I12", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String sslPrincipalMappingRules) {\n        this.rules = parseRules(splitRules(sslPrincipalMappingRules));\n    }\n\n    public static SslPrincipalMapper fromRules(String sslPrincipalMappingRules) {\n        return new SslPrincipalMapper(sslPrincipalMappingRules);\n    }\n\n    private static List<String> splitRules(String sslPrincipalMappingRules) {\n        if (sslPrincipalMappingRules == null) {\n            sslPrincipalMappingRules = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> result = new ArrayList<>();\n        Matcher matcher = RULE_SPLITTER.matcher(sslPrincipalMappingRules.trim());\n        while (matcher.find()) {\n            result.add(matcher.group(1));\n        }\n\n        return result;\n    }\n\n    private static List<Rule> parseRules(List<String> rules) {\n        List<Rule> result = new ArrayList<>();\n        for (String rule : rules) {\n            Matcher matcher = RULE_PARSER.matcher(rule);\n            if (!matcher.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + rule);\n            }\n            if (rule.length() != matcher.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + rule + \"`, unmatched substring: `\" + rule.substring(matcher.end()) + \"`\");\n            }\n\n            // empty rules are ignored\n            if (matcher.group(1) != null) {\n                result.add(new Rule());\n            } else if (matcher.group(2) != null) {\n                result.add(new Rule(matcher.group(2),\n                                    matcher.group(4),\n                                    \"L\".equals(matcher.group(6)),\n                                    \"U\".equals(matcher.group(6))));\n            }\n        }\n\n        return result;\n    }\n\n    public String getName(String distinguishedName) throws IOException {\n        for (Rule r : rules) {\n            String principalName = r.apply(distinguishedName);\n            if (principalName != null) {\n                return principalName;\n            }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + distinguishedName + \", rules \" + rules);\n    }\n\n    @Override\n    public String toString() {\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String msg) {\n            super(msg);\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String pattern, String replacement, boolean toLowerCase, boolean toUpperCase) {\n            isDefault = false;\n            this.pattern = pattern == null ? null : Pattern.compile(pattern);\n            this.replacement = replacement;\n            this.toLowerCase = toLowerCase;\n            this.toUpperCase = toUpperCase;\n        }\n\n        String apply(String distinguishedName) {\n            if (isDefault) {\n                return distinguishedName;\n            }\n\n            String result = null;\n            final Matcher m = pattern.matcher(distinguishedName);\n\n            if (m.matches()) {\n                result = distinguishedName.replaceAll(pattern.pattern(), escapeLiteralBackReferences(replacement, m.groupCount()));\n            }\n\n            if (toLowerCase && result != null) {\n                result = result.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && result != null) {\n                result = result.toUpperCase(Locale.ENGLISH);\n            }\n\n            return result;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String escapeLiteralBackReferences(final String unescaped, final int numCapturingGroups) {\n            if (numCapturingGroups == 0) {\n                return unescaped;\n            }\n\n            String value = unescaped;\n            final Matcher backRefMatcher = BACK_REFERENCE_PATTERN.matcher(value);\n            while (backRefMatcher.find()) {\n                final String backRefNum = backRefMatcher.group(1);\n                if (backRefNum.startsWith(\"0\")) {\n                    continue;\n                }\n                int backRefIndex = Integer.parseInt(backRefNum);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                while (backRefIndex > numCapturingGroups && backRefIndex >= 10) {\n                    backRefIndex /= 10;\n                }\n\n                if (backRefIndex > numCapturingGroups) {\n                    final StringBuilder sb = new StringBuilder(value.length() + 1);\n                    final int groupStart = backRefMatcher.start(1);\n\n                    sb.append(value, 0, groupStart - 1);\n                    sb.append(\"\\\\\");\n                    sb.append(value.substring(groupStart - 1));\n                    value = sb.toString();\n                }\n            }\n\n            return value;\n        }\n\n        @Override\n        public String toString() {\n            StringBuilder buf = new StringBuilder();\n            if (isDefault) {\n                buf.append(\"DEFAULT\");\n            } else {\n                buf.append(\"RULE:\");\n                if (pattern != null) {\n                    buf.append(pattern);\n                }\n                if (replacement != null) {\n                    buf.append(\"/\");\n                    buf.append(replacement);\n                }\n                if (toLowerCase) {\n                    buf.append(\"/L\");\n                } else if (toUpperCase) {\n                    buf.append(\"/U\");\n                }\n            }\n            return buf.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 197, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__SslPrincipalMapper__0222faff.java", "order": 12, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-95140222faff-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 307, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d9bc4553f0eb-I13", "source": "package org.apache.kafka.common.security.ssl;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\nimport static org.apache.kafka.common.config.internals.BrokerSecurityConfigs.DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n\npublic class SslPrincipalMapper {\n\n    private static final String RULE_PATTERN = \"(DEFAULT)|RULE:((\\\\\\\\.|[^\\\\\\\\/])*)/((\\\\\\\\.|[^\\\\\\\\/])*)/([LU]?).*?|(.*?)\";\n    private static final Pattern RULE_SPLITTER = Pattern.compile(\"\\\\s*(\" + RULE_PATTERN + \")\\\\s*(,\\\\s*|$)\");\n    private static final Pattern RULE_PARSER = Pattern.compile(RULE_PATTERN);\n\n    private final List<Rule> rules;\n\n    public SslPrincipalMapper(String sslPrincipalMappingRules) {\n        this.rules = parseRules(splitRules(sslPrincipalMappingRules));\n    }\n\n    public static SslPrincipalMapper fromRules(String sslPrincipalMappingRules) {\n        return new SslPrincipalMapper(sslPrincipalMappingRules);\n    }\n\n    private static List<String> splitRules(String sslPrincipalMappingRules) {\n        if (sslPrincipalMappingRules == null) {\n            sslPrincipalMappingRules = DEFAULT_SSL_PRINCIPAL_MAPPING_RULES;\n        }\n\n        List<String> result = new ArrayList<>();\n        Matcher matcher = RULE_SPLITTER.matcher(sslPrincipalMappingRules.trim());\n        while (matcher.find()) {\n            result.add(matcher.group(1));\n        }\n\n        return result;\n    }\n\n    private static List<Rule> parseRules(List<String> rules) {\n        List<Rule> result = new ArrayList<>();\n        {\n          java.util.Iterator<?> loopIterator = (rules).iterator();\n          while (loopIterator.hasNext()) {\n            String rule = (String) loopIterator.next();\n            Matcher matcher = RULE_PARSER.matcher(rule);\n            if (!matcher.lookingAt()) {\n                throw new IllegalArgumentException(\"Invalid rule: \" + rule);\n            }\n            if (rule.length() != matcher.end()) {\n                throw new IllegalArgumentException(\"Invalid rule: `\" + rule + \"`, unmatched substring: `\" + rule.substring(matcher.end()) + \"`\");\n            }\n\n            // empty rules are ignored\n            if (matcher.group(1) != null) {\n                result.add(new Rule());\n            } else if (matcher.group(2) != null) {\n                result.add(new Rule(matcher.group(2),\n                                    matcher.group(4),\n                                    \"L\".equals(matcher.group(6)),\n                                    \"U\".equals(matcher.group(6))));\n            }\n          }\n        }\n\n        return result;\n    }\n\n    public String getName(String distinguishedName) throws IOException {\n        {\n          java.util.Iterator<?> loopIteratorA = (rules).iterator();\n          while (loopIteratorA.hasNext()) {\n            Rule r = (Rule) loopIteratorA.next();\n            String principalName = r.apply(distinguishedName);\n            if (principalName != null) {\n                return principalName;\n            }\n          }\n        }\n        throw new NoMatchingRule(\"No rules apply to \" + distinguishedName + \", rules \" + rules);\n    }\n\n    @Override\n    public String toString() {\n        return \"SslPrincipalMapper(rules = \" + rules + \")\";\n    }\n\n    public static class NoMatchingRule extends IOException {\n        NoMatchingRule(String msg) {\n            super(msg);\n        }\n    }\n\n    private static class Rule {\n        private static final Pattern BACK_REFERENCE_PATTERN = Pattern.compile(\"\\\\$(\\\\d+)\");\n\n        private final boolean isDefault;\n        private final Pattern pattern;\n        private final String replacement;\n        private final boolean toLowerCase;\n        private final boolean toUpperCase;\n\n        Rule() {\n            isDefault = true;\n            pattern = null;\n            replacement = null;\n            toLowerCase = false;\n            toUpperCase = false;\n        }\n\n        Rule(String pattern, String replacement, boolean toLowerCase, boolean toUpperCase) {\n            isDefault = false;\n            this.pattern = pattern == null ? null : Pattern.compile(pattern);\n            this.replacement = replacement;\n            this.toLowerCase = toLowerCase;\n            this.toUpperCase = toUpperCase;\n        }\n\n        String apply(String distinguishedName) {\n            if (isDefault) {\n                return distinguishedName;\n            }\n\n            String result = null;\n            final Matcher m = pattern.matcher(distinguishedName);\n\n            if (m.matches()) {\n                result = distinguishedName.replaceAll(pattern.pattern(), escapeLiteralBackReferences(replacement, m.groupCount()));\n            }\n\n            if (toLowerCase && result != null) {\n                result = result.toLowerCase(Locale.ENGLISH);\n            } else if (toUpperCase && result != null) {\n                result = result.toUpperCase(Locale.ENGLISH);\n            }\n\n            return result;\n        }\n\n        //If we find a back reference that is not valid, then we will treat it as a literal string. For example, if we have 3 capturing\n        //groups and the Replacement Value has the value is \"$1@$4\", then we want to treat the $4 as a literal \"$4\", rather\n        //than attempting to use it as a back reference.\n        //This method was taken from Apache Nifi project : org.apache.nifi.authorization.util.IdentityMappingUtil\n        private String escapeLiteralBackReferences(final String unescaped, final int numCapturingGroups) {\n            if (numCapturingGroups == 0) {\n                return unescaped;\n            }\n\n            String value = unescaped;\n            final Matcher backRefMatcher = BACK_REFERENCE_PATTERN.matcher(value);\n            while (backRefMatcher.find()) {\n                final String backRefNum = backRefMatcher.group(1);\n                if (backRefNum.startsWith(\"0\")) {\n                    continue;\n                }\n                int backRefIndex = Integer.parseInt(backRefNum);\n\n\n                // if we have a replacement value like $123, and we have less than 123 capturing groups, then\n                // we want to truncate the 3 and use capturing group 12; if we have less than 12 capturing groups,\n                // then we want to truncate the 2 and use capturing group 1; if we don't have a capturing group then\n                // we want to truncate the 1 and get 0.\n                while (backRefIndex > numCapturingGroups && backRefIndex >= 10) {\n                    backRefIndex /= 10;\n                }\n\n                if (backRefIndex > numCapturingGroups) {\n                    final StringBuilder sb = new StringBuilder(value.length() + 1);\n                    final int groupStart = backRefMatcher.start(1);\n\n                    sb.append(value, 0, groupStart - 1);\n                    sb.append(\"\\\\\");\n                    sb.append(value.substring(groupStart - 1));\n                    value = sb.toString();\n                }\n            }\n\n            return value;\n        }\n\n        @Override\n        public String toString() {\n            StringBuilder buf = new StringBuilder();\n            if (isDefault) {\n                buf.append(\"DEFAULT\");\n            } else {\n                buf.append(\"RULE:\");\n                if (pattern != null) {\n                    buf.append(pattern);\n                }\n                if (replacement != null) {\n                    buf.append(\"/\");\n                    buf.append(replacement);\n                }\n                if (toLowerCase) {\n                    buf.append(\"/L\");\n                } else if (toUpperCase) {\n                    buf.append(\"/U\");\n                }\n            }\n            return buf.toString();\n        }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__SslPrincipalMapper__58001186.java", "base_sample_id": "source-eb7616c6c8de17f3", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "9333c33b37b6ce9f54e2c1e255349f4f0f71868ccafc849bcf903bbf6e6385d5", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java", "interference": "lower-for-to-while", "level": 13, "line_count": 205, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__SslPrincipalMapper__4553f0eb.java", "order": 13, "original_content_sha256": "2df9fa91f8f0042a50ac8bd8ecd4836e2dcc603818f07dd1d809c93ddbab96d2", "parent_variant_id": "int-8d3e58001186-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/security/ssl/SslPrincipalMapper.java#L28-L215", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 2, "enhanced_for_loops_found": 2, "enhanced_for_loops_lowered_to_while": 2, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 2, "for_loops_lowered_to_while": 2, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "SslPrincipalMapper", "variant_id": "int-d9bc4553f0eb-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 308, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-aef5b2103643-SRC", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    /**\n     * Returns the current time in milliseconds.\n     */\n    long milliseconds();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */\n    default long hiResClockMs() {\n        return TimeUnit.NANOSECONDS.toMillis(nanoseconds());\n    }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long nanoseconds();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void sleep(long ms);\n\n    /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void waitObject(Object obj, Supplier<Boolean> condition, long deadlineMs) throws InterruptedException {\n        synchronized (obj) {\n            while (true) {\n                if (condition.get())\n                    return;\n\n                long currentTimeMs = milliseconds();\n                if (currentTimeMs >= deadlineMs)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\");\n\n                obj.wait(deadlineMs - currentTimeMs);\n            }\n        }\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(long timeoutMs) {\n        return new Timer(this, timeoutMs);\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(Duration timeout) {\n        return timer(timeout.toMillis());\n    }\n\n    /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T waitForFuture(\n        Future<T> future,\n        long deadlineNs\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException timeoutException = null;\n        while (true) {\n            long nowNs = nanoseconds();\n            if (deadlineNs <= nowNs) {\n                throw (timeoutException == null) ? new TimeoutException() : timeoutException;\n            }\n            long deltaNs = deadlineNs - nowNs;\n            try {\n                return future.get(deltaNs, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException t) {\n                timeoutException = t;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": null, "level": 0, "line_count": 114, "local_path": "source-original/SRC__apache-kafka__Time__b2103643.java", "order": 0, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-aef5b2103643-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 309, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-624f4807813a-I01", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n\n\n\n\n\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    \n\n\n    long milliseconds();\n\n    \n\n\n    default long hiResClockMs() {\n        return TimeUnit.NANOSECONDS.toMillis(nanoseconds());\n    }\n\n    \n\n\n\n\n\n\n\n\n\n\n    long nanoseconds();\n\n    \n\n\n    void sleep(long ms);\n\n    \n\n\n\n\n\n\n\n\n\n\n    default void waitObject(Object obj, Supplier<Boolean> condition, long deadlineMs) throws InterruptedException {\n        synchronized (obj) {\n            while (true) {\n                if (condition.get())\n                    return;\n\n                long currentTimeMs = milliseconds();\n                if (currentTimeMs >= deadlineMs)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\");\n\n                obj.wait(deadlineMs - currentTimeMs);\n            }\n        }\n    }\n\n    \n\n\n    default Timer timer(long timeoutMs) {\n        return new Timer(this, timeoutMs);\n    }\n\n    \n\n\n    default Timer timer(Duration timeout) {\n        return timer(timeout.toMillis());\n    }\n\n    \n\n\n\n\n\n\n\n    default <T> T waitForFuture(\n        Future<T> future,\n        long deadlineNs\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException timeoutException = null;\n        while (true) {\n            long nowNs = nanoseconds();\n            if (deadlineNs <= nowNs) {\n                throw (timeoutException == null) ? new TimeoutException() : timeoutException;\n            }\n            long deltaNs = deadlineNs - nowNs;\n            try {\n                return future.get(deltaNs, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException t) {\n                timeoutException = t;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "28e16d4647dfb5fcbe9ff3ec2f29cfae20c025b2f2a19fcdfd0605afb6b975ce", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "remove-comments", "level": 1, "line_count": 114, "local_path": "comments/remove-comments/I01__apache-kafka__Time__4807813a.java", "order": 1, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 2106, "comments_removed": 9}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-624f4807813a-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 310, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-95dd5b61c175-I02", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    /**\n     * Returns the current time in milliseconds.\n     */\n    long mil();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */\n    default long hi() {\n        return TimeUnit.NANOSECONDS.toMillis(nan());\n    }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long nan();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void sle(long ms);\n\n    /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void wait(Object obj, Supplier<Boolean> con, long deadline) throws InterruptedException {\n        synchronized (obj) {\n            while (true) {\n                if (con.get())\n                    return;\n\n                long current = mil();\n                if (current >= deadline)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\");\n\n                obj.wait(deadline - current);\n            }\n        }\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer tim(long timeout2) {\n        return new Timer(this, timeout2);\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer tim(Duration tim) {\n        return tim(tim.toMillis());\n    }\n\n    /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T wait2(\n        Future<T> fut,\n        long deadline2\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException timeout = null;\n        while (true) {\n            long now = nan();\n            if (deadline2 <= now) {\n                throw (timeout == null) ? new TimeoutException() : timeout;\n            }\n            long delta = deadline2 - now;\n            try {\n                return fut.get(delta, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException t) {\n                timeout = t;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "82ea57c8fc697fecf56f232b5d62a5f1b5875f495dd806cc5a80dbee87986df0", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "shorten-identifiers", "level": 2, "line_count": 114, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__Time__5b61c175.java", "order": 2, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 19, "identifiers_declared": 13, "local_name_collisions_avoided": 2, "method_calls_renamed": 4, "method_declarations_renamed": 8, "method_name_collisions_avoided": 1, "method_name_groups": 7}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-95dd5b61c175-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 311, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0e01ef32dac0-I03", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    /**\n     * Returns the current time in milliseconds.\n     */\n    long validatePath();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */\n    default long parseAddress() {\n        return TimeUnit.NANOSECONDS.toMillis(sendAddress());\n    }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long sendAddress();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void apply(long age);\n\n    /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void checkBatch(Object key, Supplier<Boolean> nextToken, long localState) throws InterruptedException {\n        synchronized (key) {\n            while (true) {\n                if (nextToken.get())\n                    return;\n\n                long defaultStatus = validatePath();\n                if (defaultStatus >= localState)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\");\n\n                key.wait(localState - defaultStatus);\n            }\n        }\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer write(long finalPath) {\n        return new Timer(this, finalPath);\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer write(Duration balance) {\n        return write(balance.toMillis());\n    }\n\n    /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T removeSession(\n        Future<T> amount,\n        long finalToken\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException currentRequest = null;\n        while (true) {\n            long order = sendAddress();\n            if (finalToken <= order) {\n                throw (currentRequest == null) ? new TimeoutException() : currentRequest;\n            }\n            long profile = finalToken - order;\n            try {\n                return amount.get(profile, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException map) {\n                currentRequest = map;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "5a8bf719e9c12dccdbec1c706a191d217c1e3a395e0b76fb22b420753c582e7d", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "mislead-identifiers", "level": 3, "line_count": 114, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__Time__ef32dac0.java", "order": 3, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 19, "identifiers_declared": 13, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 10, "local_random_pool_selections": 13, "local_total_length_difference": 5, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 4, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 8, "method_exact_length_matches": 7, "method_name_groups": 7, "method_random_pool_selections": 7, "method_total_length_difference": 0}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-0e01ef32dac0-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 312, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0206e624b379-I04", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    /**\n     * Returns the current time in milliseconds.\n     */\n    long a();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */\n    default long b() {\n        return TimeUnit.NANOSECONDS.toMillis(c());\n    }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long c();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void d(long a);\n\n    /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void e(Object b, Supplier<Boolean> c, long d) throws InterruptedException {\n        synchronized (b) {\n            while (true) {\n                if (c.get())\n                    return;\n\n                long e = a();\n                if (e >= d)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\");\n\n                b.wait(d - e);\n            }\n        }\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer f(long f) {\n        return new Timer(this, f);\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer f(Duration g) {\n        return f(g.toMillis());\n    }\n\n    /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T g(\n        Future<T> h,\n        long i\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException j = null;\n        while (true) {\n            long k = c();\n            if (i <= k) {\n                throw (j == null) ? new TimeoutException() : j;\n            }\n            long l = i - k;\n            try {\n                return h.get(l, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException m) {\n                j = m;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "c8325d2192297522130c215a913779f9ceb0385eafd562447ddb771041c38256", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "garble-identifiers", "level": 4, "line_count": 114, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__Time__e624b379.java", "order": 4, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 19, "identifiers_declared": 13, "local_name_collisions_avoided": 0, "method_calls_renamed": 4, "method_declarations_renamed": 8, "method_name_collisions_avoided": 0, "method_name_groups": 7}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-0206e624b379-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 313, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c56d83d18040-I05", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    /**\n     * Returns the current time in milliseconds.\n     */\n    long milliseconds();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */\n    default long hiResClockMs() {\n        return TimeUnit.NANOSECONDS.toMillis(nanoseconds());\n    }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long nanoseconds();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void sleep(long ms);\n\n    /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void waitObject(Object obj, Supplier<Boolean> condition, long deadlineMs) throws InterruptedException {\n        synchronized (obj) {\n            while (true) {\n                if (condition.get())\n                    return;\n\n                long currentTimeMs = milliseconds();\n                if (currentTimeMs >= deadlineMs)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\");\n\n                obj.wait(deadlineMs - currentTimeMs);\n            }\n        }\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(long timeoutMs) {\n        return new Timer(this, timeoutMs);\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(Duration timeout) {\n        return timer(timeout.toMillis());\n    }\n\n    /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T waitForFuture(\n        Future<T> future,\n        long deadlineNs\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException timeoutException = null;\n        while (true) {\n            long nowNs = nanoseconds();\n            if (deadlineNs <= nowNs) {\n                throw (timeoutException == null) ? new TimeoutException() : timeoutException;\n            }\n            long deltaNs = deadlineNs - nowNs;\n            try {\n                return future.get(deltaNs, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException t) {\n                timeoutException = t;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "encode-integer-literals", "level": 5, "line_count": 114, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__Time__83d18040.java", "order": 5, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-c56d83d18040-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 314, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2a182ca24c95-I06", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    /**\n     * Returns the current time in milliseconds.\n     */\n    long milliseconds();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */\n    default long hiResClockMs() {\n        return TimeUnit.NANOSECONDS.toMillis(nanoseconds());\n    }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long nanoseconds();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void sleep(long ms);\n\n    /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void waitObject(Object obj, Supplier<Boolean> condition, long deadlineMs) throws InterruptedException {\n        synchronized (obj) {\n            while (true) {\n                if (!((condition.get()))) {} else { return; }\n\n                long currentTimeMs = milliseconds();\n                if (!((currentTimeMs >= deadlineMs))) {} else { throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\"); }\n\n                obj.wait(deadlineMs - currentTimeMs);\n            }\n        }\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(long timeoutMs) {\n        return new Timer(this, timeoutMs);\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(Duration timeout) {\n        return timer(timeout.toMillis());\n    }\n\n    /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T waitForFuture(\n        Future<T> future,\n        long deadlineNs\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException timeoutException = null;\n        while (true) {\n            long nowNs = nanoseconds();\n            if (!((deadlineNs <= nowNs))) {} else {\n                throw (timeoutException == null) ? new TimeoutException() : timeoutException;\n            }\n            long deltaNs = deadlineNs - nowNs;\n            try {\n                return future.get(deltaNs, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException t) {\n                timeoutException = t;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "2039701117ca7acd078634bc62d4fea2950ade59447943c9f571f8269dbd1289", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "invert-conditions", "level": 6, "line_count": 112, "local_path": "expressions/invert-conditions/I06__apache-kafka__Time__2ca24c95.java", "order": 6, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 3}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-2a182ca24c95-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 315, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0cb3fcac0dc8-I07", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    /**\n     * Returns the current time in milliseconds.\n     */\n    long milliseconds();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */\n    default long hiResClockMs() {\nif (((0x7DC ^ 0x7DC) != 0)) { throw new AssertionError(); }\n\n        return TimeUnit.NANOSECONDS.toMillis(nanoseconds());\n    }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long nanoseconds();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void sleep(long ms);\n\n    /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void waitObject(Object obj, Supplier<Boolean> condition, long deadlineMs) throws InterruptedException {\nif (((0xF0EA ^ 0xF0EA) != 0)) { throw new AssertionError(); }\n\n        synchronized (obj) {\n            while (true) {\n                if (condition.get())\n                    return;\n\n                long currentTimeMs = milliseconds();\n                if (currentTimeMs >= deadlineMs)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\");\n\n                obj.wait(deadlineMs - currentTimeMs);\n            }\n        }\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(long timeoutMs) {\nif (((0x6CD8 ^ 0x6CD8) != 0)) { throw new AssertionError(); }\n\n        return new Timer(this, timeoutMs);\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(Duration timeout) {\nif (((0x8E8 ^ 0x8E8) != 0)) { throw new AssertionError(); }\n\n        return timer(timeout.toMillis());\n    }\n\n    /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T waitForFuture(\n        Future<T> future,\n        long deadlineNs\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\nif (((0x296B ^ 0x296B) != 0)) { throw new AssertionError(); }\n\n        TimeoutException timeoutException = null;\n        while (true) {\n            long nowNs = nanoseconds();\n            if (deadlineNs <= nowNs) {\n                throw (timeoutException == null) ? new TimeoutException() : timeoutException;\n            }\n            long deltaNs = deadlineNs - nowNs;\n            try {\n                return future.get(deltaNs, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException t) {\n                timeoutException = t;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d0d6ac81228f03ec812938d1987da7a81199f8105184fa11cce536f888edd21b", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "insert-dead-branches", "level": 7, "line_count": 124, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__Time__fcac0dc8.java", "order": 7, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 5}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-0cb3fcac0dc8-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 316, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e56f646da357-I08", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    /**\n     * Returns the current time in milliseconds.\n     */\n    long milliseconds();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */\n    default long hiResClockMs() {\n        return TimeUnit.NANOSECONDS.toMillis(nanoseconds());\n    }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long nanoseconds();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void sleep(long ms);\n\n    /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void waitObject(Object obj, Supplier<Boolean> condition, long deadlineMs) throws InterruptedException {\n        synchronized (obj) {\n            while (true) {\n                if (condition.get())\n                    return;\n\n                long currentTimeMs = milliseconds();\n                if (currentTimeMs >= deadlineMs)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\");\n\n                obj.wait(deadlineMs - currentTimeMs);\n            }\n        }\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(long timeoutMs) {\n        return new Timer(this, timeoutMs);\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(Duration timeout) {\n{\n  int factorial = 1;\n  for (int currentFactor = 2; currentFactor <= 4; currentFactor++) {\n    factorial *= currentFactor;\n  }\n}\n\n        return timer(timeout.toMillis());\n    }\n\n    /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T waitForFuture(\n        Future<T> future,\n        long deadlineNs\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException timeoutException = null;\n        while (true) {\n            long nowNs = nanoseconds();\n            if (deadlineNs <= nowNs) {\n                throw (timeoutException == null) ? new TimeoutException() : timeoutException;\n            }\n            long deltaNs = deadlineNs - nowNs;\n            try {\n                return future.get(deltaNs, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException t) {\n                timeoutException = t;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "cafe3be55529656946fe2931a1c3df337a07afc3626a9f1a47b25f020245dde9", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 121, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__Time__646da357.java", "order": 8, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 6}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-e56f646da357-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 317, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b548e2baa90b-I09", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    /**\n     * Returns the current time in milliseconds.\n     */\n    long milliseconds();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */\n    default long hiResClockMs() {\n{int lI0O_297f8eb1=0x7EB5;boolean lI0O_e174305d=true;do{lI0O_297f8eb1^=0x7EB5;lI0O_e174305d=false;}while(lI0O_e174305d);}\n\n        return TimeUnit.NANOSECONDS.toMillis(nanoseconds());\n    }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long nanoseconds();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void sleep(long ms);\n\n    /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void waitObject(Object obj, Supplier<Boolean> condition, long deadlineMs) throws InterruptedException {\n        synchronized (obj) {\n            while (true) {\n                if (condition.get())\n                    return;\n\n                long currentTimeMs = milliseconds();\n                if (currentTimeMs >= deadlineMs)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\");\n\n                obj.wait(deadlineMs - currentTimeMs);\n            }\n        }\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(long timeoutMs) {\n        return new Timer(this, timeoutMs);\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(Duration timeout) {\n        return timer(timeout.toMillis());\n    }\n\n    /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T waitForFuture(\n        Future<T> future,\n        long deadlineNs\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException timeoutException = null;\n        while (true) {\n            long nowNs = nanoseconds();\n            if (deadlineNs <= nowNs) {\n                throw (timeoutException == null) ? new TimeoutException() : timeoutException;\n            }\n            long deltaNs = deadlineNs - nowNs;\n            try {\n                return future.get(deltaNs, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException t) {\n                timeoutException = t;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "6fd1b15de508ff2ba82f27dfb41c3cdcd64ee06cc556b7dcf423d14f9416f4bd", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 116, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__Time__e2baa90b.java", "order": 9, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 7}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-b548e2baa90b-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 318, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fd8cf99c5945-I10", "source": "package org.apache.kafka.common.utils; import java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime(); /**\n     * Returns the current time in milliseconds.\n     */ long milliseconds();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */ default long hiResClockMs() {\n        return TimeUnit.NANOSECONDS.toMillis(nanoseconds()); }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long nanoseconds();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void sleep(long ms); /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void waitObject(Object obj, Supplier<Boolean> condition, long deadlineMs) throws InterruptedException { synchronized (obj) { while (true) {\n                if (condition.get())\n                    return;\n\n                long currentTimeMs = milliseconds(); if (currentTimeMs >= deadlineMs)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\"); obj.wait(deadlineMs - currentTimeMs); }\n        } }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */ default Timer timer(long timeoutMs) {\n        return new Timer(this, timeoutMs);\n    } /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */ default Timer timer(Duration timeout) { return timer(timeout.toMillis());\n    } /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T waitForFuture(\n        Future<T> future,\n        long deadlineNs\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException timeoutException = null;\n        while (true) { long nowNs = nanoseconds();\n            if (deadlineNs <= nowNs) { throw (timeoutException == null) ? new TimeoutException() : timeoutException;\n            }\n            long deltaNs = deadlineNs - nowNs; try {\n                return future.get(deltaNs, TimeUnit.NANOSECONDS); } catch (TimeoutException t) { timeoutException = t; }\n        }\n    } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "52dbe622790e453872a016208831af0ce9277824827079e670d41edda48ff084", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "partially-compact-layout", "level": 10, "line_count": 85, "local_path": "layout/partially-compact-layout/I10__apache-kafka__Time__f99c5945.java", "order": 10, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 60, "line_break_groups_removed": 24, "line_breaks_removed": 29, "whitespace_characters_removed": 197}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-fd8cf99c5945-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 319, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1d4ae2111a5f-I11", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    /**\n     * Returns the current time in milliseconds.\n     */\n    long milliseconds();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */\n    default long hiResClockMs() {\n        return TimeUnit.NANOSECONDS.toMillis(nanoseconds());\n    }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long nanoseconds();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void sleep(long ms);\n\n    /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void waitObject(Object obj, Supplier<Boolean> condition, long deadlineMs) throws InterruptedException {\n        synchronized (obj) {\n            while (true) {\n                if (condition.get())\n                    return;\n\n                long currentTimeMs = milliseconds();\n                if (currentTimeMs >= deadlineMs)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\");\n\n                obj.wait(deadlineMs - currentTimeMs);\n            }\n        }\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(long timeoutMs) {\n        return new Timer(this, timeoutMs);\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(Duration timeout) {\n        return timer(timeout.toMillis());\n    }\n\n    /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T waitForFuture(\n        Future<T> future,\n        long deadlineNs\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException timeoutException = null;\n        while (true) {\n            long nowNs = nanoseconds();\n            if (deadlineNs <= nowNs) {\n                throw (timeoutException == null) ? new TimeoutException() : timeoutException;\n            }\n            long deltaNs = deadlineNs - nowNs;\n            try {\n                return future.get(deltaNs, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException t) {\n                timeoutException = t;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 114, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__Time__e2111a5f.java", "order": 11, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-1d4ae2111a5f-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 320, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7ef538e2428d-I12", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    /**\n     * Returns the current time in milliseconds.\n     */\n    long milliseconds();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */\n    default long hiResClockMs() {\n        return TimeUnit.NANOSECONDS.toMillis(nanoseconds());\n    }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long nanoseconds();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void sleep(long ms);\n\n    /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void waitObject(Object obj, Supplier<Boolean> condition, long deadlineMs) throws InterruptedException {\n        synchronized (obj) {\n            while (true) {\n                if (condition.get())\n                    return;\n\n                long currentTimeMs = milliseconds();\n                if (currentTimeMs >= deadlineMs)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\");\n\n                obj.wait(deadlineMs - currentTimeMs);\n            }\n        }\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(long timeoutMs) {\n        return new Timer(this, timeoutMs);\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(Duration timeout) {\n        return timer(timeout.toMillis());\n    }\n\n    /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T waitForFuture(\n        Future<T> future,\n        long deadlineNs\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException timeoutException = null;\n        while (true) {\n            long nowNs = nanoseconds();\n            if (deadlineNs <= nowNs) {\n                throw (timeoutException == null) ? new TimeoutException() : timeoutException;\n            }\n            long deltaNs = deadlineNs - nowNs;\n            try {\n                return future.get(deltaNs, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException t) {\n                timeoutException = t;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 114, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__Time__38e2428d.java", "order": 12, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-7ef538e2428d-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 321, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b88b6a872300-I13", "source": "package org.apache.kafka.common.utils;\nimport java.time.Duration;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport java.util.function.Supplier;\n\n/**\n * An interface abstracting the clock to use in unit testing classes that make use of clock time.\n *\n * Implementations of this class should be thread-safe.\n */\npublic interface Time {\n\n    Time SYSTEM = SystemTime.getSystemTime();\n\n    /**\n     * Returns the current time in milliseconds.\n     */\n    long milliseconds();\n\n    /**\n     * Returns the value returned by `nanoseconds` converted into milliseconds.\n     */\n    default long hiResClockMs() {\n        return TimeUnit.NANOSECONDS.toMillis(nanoseconds());\n    }\n\n    /**\n     * Returns the current value of the running JVM's high-resolution time source, in nanoseconds.\n     *\n     * <p>This method can only be used to measure elapsed time and is\n     * not related to any other notion of system or wall-clock time.\n     * The value returned represents nanoseconds since some fixed but\n     * arbitrary <i>origin</i> time (perhaps in the future, so values\n     * may be negative).  The same origin is used by all invocations of\n     * this method in an instance of a Java virtual machine; other\n     * virtual machine instances are likely to use a different origin.\n     */\n    long nanoseconds();\n\n    /**\n     * Sleep for the given number of milliseconds\n     */\n    void sleep(long ms);\n\n    /**\n     * Wait for a condition using the monitor of a given object. This avoids the implicit\n     * dependence on system time when calling {@link Object#wait()}.\n     *\n     * @param obj The object that will be waited with {@link Object#wait()}. Note that it is the responsibility\n     *      of the caller to call notify on this object when the condition is satisfied.\n     * @param condition The condition we are awaiting\n     * @param deadlineMs The deadline timestamp at which to raise a timeout error\n     *\n     * @throws org.apache.kafka.common.errors.TimeoutException if the timeout expires before the condition is satisfied\n     */\n    default void waitObject(Object obj, Supplier<Boolean> condition, long deadlineMs) throws InterruptedException {\n        synchronized (obj) {\n            while (true) {\n                if (condition.get())\n                    return;\n\n                long currentTimeMs = milliseconds();\n                if (currentTimeMs >= deadlineMs)\n                    throw new org.apache.kafka.common.errors.TimeoutException(\"Condition not satisfied before deadline\");\n\n                obj.wait(deadlineMs - currentTimeMs);\n            }\n        }\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(long timeoutMs) {\n        return new Timer(this, timeoutMs);\n    }\n\n    /**\n     * Get a timer which is bound to this time instance and expires after the given timeout\n     */\n    default Timer timer(Duration timeout) {\n        return timer(timeout.toMillis());\n    }\n\n    /**\n     * Wait for a future to complete, or time out.\n     *\n     * @param future        The future to wait for.\n     * @param deadlineNs    The time in the future, in monotonic nanoseconds, to time out.\n     * @return              The result of the future.\n     * @param <T>           The type of the future.\n     */\n    default <T> T waitForFuture(\n        Future<T> future,\n        long deadlineNs\n    ) throws TimeoutException, InterruptedException, ExecutionException  {\n        TimeoutException timeoutException = null;\n        while (true) {\n            long nowNs = nanoseconds();\n            if (deadlineNs <= nowNs) {\n                throw (timeoutException == null) ? new TimeoutException() : timeoutException;\n            }\n            long deltaNs = deadlineNs - nowNs;\n            try {\n                return future.get(deltaNs, TimeUnit.NANOSECONDS);\n            } catch (TimeoutException t) {\n                timeoutException = t;\n            }\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__Time__b2103643.java", "base_sample_id": "source-d8729e2a2a35da97", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:clients/src/main/java/org/apache/kafka/common/utils/Time.java", "interference": "lower-for-to-while", "level": 13, "line_count": 114, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__Time__6a872300.java", "order": 13, "original_content_sha256": "8b45869a198c7177091d320551cb58cd84186e3fa4976e5c7e6bc67d6a1e1123", "parent_variant_id": "int-aef5b2103643-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "clients/src/main/java/org/apache/kafka/common/utils/Time.java#L26-L131", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "Time", "variant_id": "int-b88b6a872300-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 322, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bfadb4c3952c-SRC", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n/**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> validate(ConnectorClientConfigRequest connectorClientConfigRequest);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef config() {\n        return new ConfigDef();\n    }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */\n    @Override\n    default String version() {\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": null, "level": 0, "line_count": 60, "local_path": "source-original/SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "order": 0, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-bfadb4c3952c-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 99, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-caddab134025-I01", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    \n\n\n\n\n\n\n\n\n\n\n\n    List<ConfigValue> validate(ConnectorClientConfigRequest connectorClientConfigRequest);\n\n    \n\n\n\n\n    @Override\n    default ConfigDef config() {\n        return new ConfigDef();\n    }\n\n    \n\n\n\n\n    @Override\n    default String version() {\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "4f11dac92a2b43f4f59c093bd83aa6ac7108a33e5ead3cdddad1ec961f4fbd38", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "remove-comments", "level": 1, "line_count": 60, "local_path": "comments/remove-comments/I01__apache-kafka__ConnectorClientConfigOverridePolicy__ab134025.java", "order": 1, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 2199, "comments_removed": 4}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-caddab134025-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 100, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ed2f0a770e07-I02", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n/**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> val(ConnectorClientConfigRequest connector2);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef con() {\n        return new ConfigDef();\n    }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */\n    @Override\n    default String ver() {\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "f4e7573b2d7935f207215fd3f80c52b0b7a23b3ff8a97fdfddf421b4642d660d", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "shorten-identifiers", "level": 2, "line_count": 60, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__ConnectorClientConfigOverridePolicy__0a770e07.java", "order": 2, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 1, "local_name_collisions_avoided": 1, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-ed2f0a770e07-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 101, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-85cd30c1dd64-I03", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n/**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> checkKey(ConnectorClientConfigRequest pendingAccount);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef verify() {\n        return new ConfigDef();\n    }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */\n    @Override\n    default String persist() {\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7a7de6e3f66a3ec1470f8bdff2cf655a7cab803175fe64a6325d4baa74cd2a7b", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "mislead-identifiers", "level": 3, "line_count": 60, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__ConnectorClientConfigOverridePolicy__30c1dd64.java", "order": 3, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 1, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 0, "local_random_pool_selections": 1, "local_total_length_difference": 14, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 3, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 0}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-85cd30c1dd64-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 102, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4ce74cee4702-I04", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n/**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> a(ConnectorClientConfigRequest a);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef b() {\n        return new ConfigDef();\n    }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */\n    @Override\n    default String c() {\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "64e61bfce30cc59e45be7e8b09bba831d9b139558f9c6afbdc98b045dc4a424d", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "garble-identifiers", "level": 4, "line_count": 60, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__ConnectorClientConfigOverridePolicy__4cee4702.java", "order": 4, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 1, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-4ce74cee4702-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 103, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-28f4e1d653d6-I05", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n/**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> validate(ConnectorClientConfigRequest connectorClientConfigRequest);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef config() {\n        return new ConfigDef();\n    }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */\n    @Override\n    default String version() {\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "encode-integer-literals", "level": 5, "line_count": 60, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__ConnectorClientConfigOverridePolicy__e1d653d6.java", "order": 5, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-28f4e1d653d6-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 104, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8ddb9e7945f7-I06", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n/**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> validate(ConnectorClientConfigRequest connectorClientConfigRequest);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef config() {\n        return new ConfigDef();\n    }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */\n    @Override\n    default String version() {\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "invert-conditions", "level": 6, "line_count": 60, "local_path": "expressions/invert-conditions/I06__apache-kafka__ConnectorClientConfigOverridePolicy__9e7945f7.java", "order": 6, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-8ddb9e7945f7-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 105, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6f66e5d0637c-I07", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n/**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> validate(ConnectorClientConfigRequest connectorClientConfigRequest);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef config() {\nif (((0xF705 ^ 0xF705) != 0)) { throw new AssertionError(); }\n\n        return new ConfigDef();\n    }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */\n    @Override\n    default String version() {\nif (((0xC932 ^ 0xC932) != 0)) { throw new AssertionError(); }\n\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b74f88f85e985fbe66f5127efbae4c18307c7854a8c66f18d89db9ff7a6a6bf1", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "insert-dead-branches", "level": 7, "line_count": 64, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__ConnectorClientConfigOverridePolicy__e5d0637c.java", "order": 7, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 2}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-6f66e5d0637c-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 106, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3be35035eb26-I08", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n/**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> validate(ConnectorClientConfigRequest connectorClientConfigRequest);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef config() {\n        return new ConfigDef();\n    }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */\n    @Override\n    default String version() {\n{\n  int previousNumber = 0;\n  int currentNumber = 1;\n  for (int sequenceStep = 0; sequenceStep < 4; sequenceStep++) {\n    int nextNumber = previousNumber + currentNumber;\n    previousNumber = currentNumber;\n    currentNumber = nextNumber;\n  }\n}\n\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ec127f1d48cc82de8a3604903e8e9e9cd4d508eabfe42ef4c3fda1db877626bb", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 70, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__ConnectorClientConfigOverridePolicy__5035eb26.java", "order": 8, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 9, "readable_template_index": 8}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-3be35035eb26-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 107, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-69813bfa2b5f-I09", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n/**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> validate(ConnectorClientConfigRequest connectorClientConfigRequest);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef config() {\n{boolean lI0O_af278eca=((0x7A47^0x7A47)!=0);lI0O_af278eca=!(!lI0O_af278eca);}\n\n        return new ConfigDef();\n    }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */\n    @Override\n    default String version() {\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "1a33f5cd529a5829d903d662b295047e5a11cc593e9d58dcf945a76608ff5ae3", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 62, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__ConnectorClientConfigOverridePolicy__3bfa2b5f.java", "order": 9, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-69813bfa2b5f-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 108, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4813a59a93be-I10", "source": "package org.apache.kafka.connect.connector.policy; import org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue; import org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List; /**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */ @InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> validate(ConnectorClientConfigRequest connectorClientConfigRequest);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef config() { return new ConfigDef(); }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */ @Override\n    default String version() { return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "09dabec15141c537e36879963ce909ae4508a7b15f4e51f305af117fb5effb72", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "partially-compact-layout", "level": 10, "line_count": 51, "local_path": "layout/partially-compact-layout/I10__apache-kafka__ConnectorClientConfigOverridePolicy__a59a93be.java", "order": 10, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 22, "line_break_groups_removed": 8, "line_breaks_removed": 9, "whitespace_characters_removed": 25}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-4813a59a93be-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 109, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-02ff922b41e3-I11", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n/**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> validate(ConnectorClientConfigRequest connectorClientConfigRequest);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef config() {\n        return new ConfigDef();\n    }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */\n    @Override\n    default String version() {\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 60, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__ConnectorClientConfigOverridePolicy__922b41e3.java", "order": 11, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-02ff922b41e3-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 110, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-50f5f155d998-I12", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n/**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> validate(ConnectorClientConfigRequest connectorClientConfigRequest);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef config() {\n        return new ConfigDef();\n    }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */\n    @Override\n    default String version() {\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 60, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__ConnectorClientConfigOverridePolicy__f155d998.java", "order": 12, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-50f5f155d998-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 111, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bd721fa2d8d8-I13", "source": "package org.apache.kafka.connect.connector.policy;\nimport org.apache.kafka.common.Configurable;\nimport org.apache.kafka.common.annotation.InterfaceAudience;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigValue;\nimport org.apache.kafka.connect.components.ConnectPlugin;\nimport java.util.List;\n\n/**\n * An interface for enforcing a policy on overriding of Kafka client configs via the connector configs.\n * <p>\n * Common use cases are ability to provide principal per connector, <code>sasl.jaas.config</code>\n * and/or enforcing that the producer/consumer configurations for optimizations are within acceptable ranges.\n * <p>Kafka Connect discovers implementations of this interface using the Java {@link java.util.ServiceLoader} mechanism.\n * To support this, implementations of this interface should also contain a service provider configuration file in\n * {@code META-INF/services/org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy}.\n * <p>\n * Implement {@link org.apache.kafka.common.metrics.Monitorable} to enable the policy to register metrics.\n * The following tags are automatically added to all metrics registered: <code>config</code> set to\n * <code>connector.client.config.override.policy</code>, and <code>class</code> set to the\n * ConnectorClientConfigOverridePolicy class name.\n */\n@InterfaceAudience.Public\npublic interface ConnectorClientConfigOverridePolicy extends Configurable, AutoCloseable, ConnectPlugin {\n\n\n    /**\n     * Workers will invoke this before configuring per-connector Kafka admin, producer, and consumer client instances\n     * to validate if all the overridden client configurations are allowed per the policy implementation.\n     * This would also be invoked during the validation of connector configs via the REST API.\n     * <p>\n     * If there are any policy violations, the connector will not be started.\n     *\n     * @param connectorClientConfigRequest an instance of {@link ConnectorClientConfigRequest} that provides the configs\n     *                                     to be overridden and its context; never {@code null}\n     * @return list of {@link ConfigValue} instances that describe each client configuration in the request and includes an \n               {@link ConfigValue#errorMessages() error} if the configuration is not allowed by the policy; never null\n     */\n    List<ConfigValue> validate(ConnectorClientConfigRequest connectorClientConfigRequest);\n\n    /**\n     * Configuration specification for this policy override.\n     *\n     * @return the configuration definition for this policy override; never null\n     */\n    @Override\n    default ConfigDef config() {\n        return new ConfigDef();\n    }\n\n    /**\n     * Get the version of this component.\n     *\n     * @return the version, formatted as a String. The version may not be {@code null} or empty.\n     */\n    @Override\n    default String version() {\n        return \"undefined\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__ConnectorClientConfigOverridePolicy__b4c3952c.java", "base_sample_id": "source-ecba4f4d1b648cf2", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java", "interference": "lower-for-to-while", "level": 13, "line_count": 60, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__ConnectorClientConfigOverridePolicy__1fa2d8d8.java", "order": 13, "original_content_sha256": "ddcbbc208b9eb5909ae3b39176af4ed7d8e2aa2874ad5093cf118dd35990684c", "parent_variant_id": "int-bfadb4c3952c-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/api/src/main/java/org/apache/kafka/connect/connector/policy/ConnectorClientConfigOverridePolicy.java#L28-L79", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "ConnectorClientConfigOverridePolicy", "variant_id": "int-bd721fa2d8d8-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 112, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ae1c115f107d-SRC", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... args) {\n        super(args);\n    }\n\n    @Override\n    protected String usage() {\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void processExtraArgs(Connect<StandaloneHerder> connect, String[] extraArgs) {\n        try {\n            for (final String connectorConfigFile : extraArgs) {\n                CreateConnectorRequest createConnectorRequest = parseConnectorConfigurationFile(connectorConfigFile);\n                FutureCallback<Herder.Created<ConnectorInfo>> cb = new FutureCallback<>((error, info) -> {\n                    if (error != null)\n                        log.error(\"Failed to create connector for {}\", connectorConfigFile);\n                    else\n                        log.info(\"Created connector {}\", info.result().name());\n                });\n                connect.herder().putConnectorConfig(\n                    createConnectorRequest.name(), createConnectorRequest.config(),\n                    createConnectorRequest.initialTargetState(),\n                    false, cb);\n                cb.get();\n            }\n            connect.herder().ready();\n        } catch (Throwable t) {\n            log.error(\"Stopping after connector error\", t);\n            connect.stop();\n            Exit.exit(3);\n        }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest parseConnectorConfigurationFile(String filePath) throws IOException {\n        ObjectMapper objectMapper = new ObjectMapper();\n\n        File connectorConfigurationFile = Paths.get(filePath).toFile();\n        try {\n            Map<String, String> connectorConfigs = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n\n            if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", filePath);\n        }\n\n        try {\n            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest createConnectorRequest = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n            if (createConnectorRequest.config().containsKey(NAME_CONFIG)) {\n                if (!createConnectorRequest.config().get(NAME_CONFIG).equals(createConnectorRequest.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + filePath\n                        + \"'\");\n                }\n            } else {\n                createConnectorRequest.config().put(NAME_CONFIG, createConnectorRequest.name());\n            }\n            return createConnectorRequest;\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                filePath, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> connectorConfigs = Utils.propsToStringMap(Utils.loadProps(filePath));\n        if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n            throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n    }\n\n    @Override\n    protected StandaloneHerder createHerder(StandaloneConfig config, String workerId, Plugins plugins,\n                                  ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy,\n                                  RestServer restServer, RestClient restClient) {\n\n        OffsetBackingStore offsetBackingStore = new FileOffsetBackingStore(plugins.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        offsetBackingStore.configure(config);\n\n        Worker worker = new Worker(workerId, Time.SYSTEM, plugins, config, offsetBackingStore,\n                connectorClientConfigOverridePolicy);\n\n        return new StandaloneHerder(worker, config.kafkaClusterId(), connectorClientConfigOverridePolicy);\n    }\n\n    @Override\n    protected StandaloneConfig createConfig(Map<String, String> workerProps) {\n        return new StandaloneConfig(workerProps);\n    }\n\n    public static void main(String[] args) {\n        ConnectStandalone connectStandalone = new ConnectStandalone(args);\n        connectStandalone.run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": null, "level": 0, "line_count": 162, "local_path": "source-original/SRC__apache-kafka__ConnectStandalone__115f107d.java", "order": 0, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-ae1c115f107d-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 85, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-62cfa49a02a2-I01", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n\n\n\n\n\n\n\n\n\n\n\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... args) {\n        super(args);\n    }\n\n    @Override\n    protected String usage() {\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void processExtraArgs(Connect<StandaloneHerder> connect, String[] extraArgs) {\n        try {\n            for (final String connectorConfigFile : extraArgs) {\n                CreateConnectorRequest createConnectorRequest = parseConnectorConfigurationFile(connectorConfigFile);\n                FutureCallback<Herder.Created<ConnectorInfo>> cb = new FutureCallback<>((error, info) -> {\n                    if (error != null)\n                        log.error(\"Failed to create connector for {}\", connectorConfigFile);\n                    else\n                        log.info(\"Created connector {}\", info.result().name());\n                });\n                connect.herder().putConnectorConfig(\n                    createConnectorRequest.name(), createConnectorRequest.config(),\n                    createConnectorRequest.initialTargetState(),\n                    false, cb);\n                cb.get();\n            }\n            connect.herder().ready();\n        } catch (Throwable t) {\n            log.error(\"Stopping after connector error\", t);\n            connect.stop();\n            Exit.exit(3);\n        }\n    }\n\n    \n\n\n\n\n\n\n\n\n\n\n\n\n\n    CreateConnectorRequest parseConnectorConfigurationFile(String filePath) throws IOException {\n        ObjectMapper objectMapper = new ObjectMapper();\n\n        File connectorConfigurationFile = Paths.get(filePath).toFile();\n        try {\n            Map<String, String> connectorConfigs = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n\n            if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", filePath);\n        }\n\n        try {\n            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest createConnectorRequest = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n            if (createConnectorRequest.config().containsKey(NAME_CONFIG)) {\n                if (!createConnectorRequest.config().get(NAME_CONFIG).equals(createConnectorRequest.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + filePath\n                        + \"'\");\n                }\n            } else {\n                createConnectorRequest.config().put(NAME_CONFIG, createConnectorRequest.name());\n            }\n            return createConnectorRequest;\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                filePath, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> connectorConfigs = Utils.propsToStringMap(Utils.loadProps(filePath));\n        if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n            throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n    }\n\n    @Override\n    protected StandaloneHerder createHerder(StandaloneConfig config, String workerId, Plugins plugins,\n                                  ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy,\n                                  RestServer restServer, RestClient restClient) {\n\n        OffsetBackingStore offsetBackingStore = new FileOffsetBackingStore(plugins.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        offsetBackingStore.configure(config);\n\n        Worker worker = new Worker(workerId, Time.SYSTEM, plugins, config, offsetBackingStore,\n                connectorClientConfigOverridePolicy);\n\n        return new StandaloneHerder(worker, config.kafkaClusterId(), connectorClientConfigOverridePolicy);\n    }\n\n    @Override\n    protected StandaloneConfig createConfig(Map<String, String> workerProps) {\n        return new StandaloneConfig(workerProps);\n    }\n\n    public static void main(String[] args) {\n        ConnectStandalone connectStandalone = new ConnectStandalone(args);\n        connectStandalone.run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "b35bb41417b266d2c5e6cdccc2efe8b9fd05b39f61886f4c8c76e5e9724aba5f", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "remove-comments", "level": 1, "line_count": 162, "local_path": "comments/remove-comments/I01__apache-kafka__ConnectStandalone__a49a02a2.java", "order": 1, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1339, "comments_removed": 2}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-62cfa49a02a2-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 86, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c7d1c0d44224-I02", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... arg) {\n        super(arg);\n    }\n\n    @Override\n    protected String usa() {\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void process(Connect<StandaloneHerder> con, String[] extra) {\n        try {\n            for (final String connector2 : extra) {\n                CreateConnectorRequest create = parse(connector2);\n                FutureCallback<Herder.Created<ConnectorInfo>> cb = new FutureCallback<>((err, inf) -> {\n                    if (err != null)\n                        log.error(\"Failed to create connector for {}\", connector2);\n                    else\n                        log.info(\"Created connector {}\", inf.result().name());\n                });\n                con.herder().putConnectorConfig(\n                    create.name(), create.config(),\n                    create.initialTargetState(),\n                    false, cb);\n                cb.get();\n            }\n            con.herder().ready();\n        } catch (Throwable t) {\n            log.error(\"Stopping after connector error\", t);\n            con.stop();\n            Exit.exit(3);\n        }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest parse(String file2) throws IOException {\n        ObjectMapper object = new ObjectMapper();\n\n        File connector3 = Paths.get(file2).toFile();\n        try {\n            Map<String, String> connector4 = object.readValue(connector3, new TypeReference<>() { });\n\n            if (!connector4.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + file2 + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(connector4.get(NAME_CONFIG), connector4, null);\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", file2);\n        }\n\n        try {\n            object.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest create2 = object.readValue(connector3, new TypeReference<>() { });\n            if (create2.config().containsKey(NAME_CONFIG)) {\n                if (!create2.config().get(NAME_CONFIG).equals(create2.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + file2\n                        + \"'\");\n                }\n            } else {\n                create2.config().put(NAME_CONFIG, create2.name());\n            }\n            return create2;\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                file2, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> connector5 = Utils.propsToStringMap(Utils.loadProps(file2));\n        if (!connector5.containsKey(NAME_CONFIG)) {\n            throw new ConnectException(\"Connector configuration at '\" + file2 + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(connector5.get(NAME_CONFIG), connector5, null);\n    }\n\n    @Override\n    protected StandaloneHerder create(StandaloneConfig con2, String worker2, Plugins plu,\n                                  ConnectorClientConfigOverridePolicy connector6,\n                                  RestServer rest2, RestClient rest3) {\n\n        OffsetBackingStore offset = new FileOffsetBackingStore(plu.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        offset.configure(con2);\n\n        Worker wor = new Worker(worker2, Time.SYSTEM, plu, con2, offset,\n                connector6);\n\n        return new StandaloneHerder(wor, con2.kafkaClusterId(), connector6);\n    }\n\n    @Override\n    protected StandaloneConfig create2(Map<String, String> worker) {\n        return new StandaloneConfig(worker);\n    }\n\n    public static void mai(String[] arg2) {\n        ConnectStandalone connect = new ConnectStandalone(arg2);\n        connect.run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "eeea43db8fa307023082e5cce676ff1cb209479a250081ee2783375f6a76aafd", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "shorten-identifiers", "level": 2, "line_count": 162, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__ConnectStandalone__c0d44224.java", "order": 2, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 53, "identifiers_declared": 28, "local_name_collisions_avoided": 12, "method_calls_renamed": 1, "method_declarations_renamed": 6, "method_name_collisions_avoided": 1, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-c7d1c0d44224-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 87, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eeddda3526fd-I03", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... node) {\n        super(node);\n    }\n\n    @Override\n    protected String route() {\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void validateAccount(Connect<StandaloneHerder> invoice, String[] finalMode) {\n        try {\n            for (final String currentAddress : finalMode) {\n                CreateConnectorRequest defaultRequest = validateBalance(currentAddress);\n                FutureCallback<Herder.Created<ConnectorInfo>> key = new FutureCallback<>((index, item) -> {\n                    if (index != null)\n                        log.error(\"Failed to create connector for {}\", currentAddress);\n                    else\n                        log.info(\"Created connector {}\", item.result().name());\n                });\n                invoice.herder().putConnectorConfig(\n                    defaultRequest.name(), defaultRequest.config(),\n                    defaultRequest.initialTargetState(),\n                    false, key);\n                key.get();\n            }\n            invoice.herder().ready();\n        } catch (Throwable age) {\n            log.error(\"Stopping after connector error\", age);\n            invoice.stop();\n            Exit.exit(3);\n        }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest validateBalance(String nextData) throws IOException {\n        ObjectMapper localAccount = new ObjectMapper();\n\n        File pendingBalance = Paths.get(nextData).toFile();\n        try {\n            Map<String, String> defaultAccount = localAccount.readValue(pendingBalance, new TypeReference<>() { });\n\n            if (!defaultAccount.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + nextData + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(defaultAccount.get(NAME_CONFIG), defaultAccount, null);\n        } catch (StreamReadException | DatabindException map) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", nextData);\n        }\n\n        try {\n            localAccount.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest primaryMessage = localAccount.readValue(pendingBalance, new TypeReference<>() { });\n            if (primaryMessage.config().containsKey(NAME_CONFIG)) {\n                if (!primaryMessage.config().get(NAME_CONFIG).equals(primaryMessage.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + nextData\n                        + \"'\");\n                }\n            } else {\n                primaryMessage.config().put(NAME_CONFIG, primaryMessage.name());\n            }\n            return primaryMessage;\n        } catch (StreamReadException | DatabindException size) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                nextData, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> pendingAccount = Utils.propsToStringMap(Utils.loadProps(nextData));\n        if (!pendingAccount.containsKey(NAME_CONFIG)) {\n            throw new ConnectException(\"Connector configuration at '\" + nextData + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(pendingAccount.get(NAME_CONFIG), pendingAccount, null);\n    }\n\n    @Override\n    protected StandaloneHerder fetchSession(StandaloneConfig buffer, String nextItem, Plugins session,\n                                  ConnectorClientConfigOverridePolicy defaultSession,\n                                  RestServer sharedPath, RestClient remoteItem) {\n\n        OffsetBackingStore currentSession = new FileOffsetBackingStore(session.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        currentSession.configure(buffer);\n\n        Worker window = new Worker(nextItem, Time.SYSTEM, session, buffer, currentSession,\n                defaultSession);\n\n        return new StandaloneHerder(window, buffer.kafkaClusterId(), defaultSession);\n    }\n\n    @Override\n    protected StandaloneConfig checkRequest(Map<String, String> sharedOrder) {\n        return new StandaloneConfig(sharedOrder);\n    }\n\n    public static void save(String[] user) {\n        ConnectStandalone currentMessage = new ConnectStandalone(user);\n        currentMessage.run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "85b7c15f3b6b4086ecde3966c7158d0c92ed0d44e03712d0f8a4cd3f92c39da9", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "mislead-identifiers", "level": 3, "line_count": 162, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__ConnectStandalone__da3526fd.java", "order": 3, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 53, "identifiers_declared": 28, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 8, "local_exact_length_matches": 15, "local_random_pool_selections": 28, "local_total_length_difference": 73, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 1, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 6, "method_exact_length_matches": 4, "method_name_groups": 6, "method_random_pool_selections": 6, "method_total_length_difference": 17}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-eeddda3526fd-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 88, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a9199a0cb874-I04", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... a) {\n        super(a);\n    }\n\n    @Override\n    protected String a() {\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void b(Connect<StandaloneHerder> b, String[] c) {\n        try {\n            for (final String d : c) {\n                CreateConnectorRequest f = c(d);\n                FutureCallback<Herder.Created<ConnectorInfo>> g = new FutureCallback<>((h, i) -> {\n                    if (h != null)\n                        log.error(\"Failed to create connector for {}\", d);\n                    else\n                        log.info(\"Created connector {}\", i.result().name());\n                });\n                b.herder().putConnectorConfig(\n                    f.name(), f.config(),\n                    f.initialTargetState(),\n                    false, g);\n                g.get();\n            }\n            b.herder().ready();\n        } catch (Throwable j) {\n            log.error(\"Stopping after connector error\", j);\n            b.stop();\n            Exit.exit(3);\n        }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest c(String k) throws IOException {\n        ObjectMapper l = new ObjectMapper();\n\n        File m = Paths.get(k).toFile();\n        try {\n            Map<String, String> n = l.readValue(m, new TypeReference<>() { });\n\n            if (!n.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + k + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(n.get(NAME_CONFIG), n, null);\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", k);\n        }\n\n        try {\n            l.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest o = l.readValue(m, new TypeReference<>() { });\n            if (o.config().containsKey(NAME_CONFIG)) {\n                if (!o.config().get(NAME_CONFIG).equals(o.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + k\n                        + \"'\");\n                }\n            } else {\n                o.config().put(NAME_CONFIG, o.name());\n            }\n            return o;\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                k, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> p = Utils.propsToStringMap(Utils.loadProps(k));\n        if (!p.containsKey(NAME_CONFIG)) {\n            throw new ConnectException(\"Connector configuration at '\" + k + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(p.get(NAME_CONFIG), p, null);\n    }\n\n    @Override\n    protected StandaloneHerder d(StandaloneConfig q, String r, Plugins s,\n                                  ConnectorClientConfigOverridePolicy t,\n                                  RestServer u, RestClient v) {\n\n        OffsetBackingStore w = new FileOffsetBackingStore(s.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        w.configure(q);\n\n        Worker x = new Worker(r, Time.SYSTEM, s, q, w,\n                t);\n\n        return new StandaloneHerder(x, q.kafkaClusterId(), t);\n    }\n\n    @Override\n    protected StandaloneConfig e(Map<String, String> y) {\n        return new StandaloneConfig(y);\n    }\n\n    public static void f(String[] z) {\n        ConnectStandalone A = new ConnectStandalone(z);\n        A.run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "0942d1f4f387a989a593ff98a673913e48aa4f3e4366f023bd07f1891685f72c", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "garble-identifiers", "level": 4, "line_count": 162, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__ConnectStandalone__9a0cb874.java", "order": 4, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 53, "identifiers_declared": 28, "local_name_collisions_avoided": 0, "method_calls_renamed": 1, "method_declarations_renamed": 6, "method_name_collisions_avoided": 0, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-a9199a0cb874-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 89, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5d9fe0206e2c-I05", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... args) {\n        super(args);\n    }\n\n    @Override\n    protected String usage() {\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void processExtraArgs(Connect<StandaloneHerder> connect, String[] extraArgs) {\n        try {\n            for (final String connectorConfigFile : extraArgs) {\n                CreateConnectorRequest createConnectorRequest = parseConnectorConfigurationFile(connectorConfigFile);\n                FutureCallback<Herder.Created<ConnectorInfo>> cb = new FutureCallback<>((error, info) -> {\n                    if (error != null)\n                        log.error(\"Failed to create connector for {}\", connectorConfigFile);\n                    else\n                        log.info(\"Created connector {}\", info.result().name());\n                });\n                connect.herder().putConnectorConfig(\n                    createConnectorRequest.name(), createConnectorRequest.config(),\n                    createConnectorRequest.initialTargetState(),\n                    false, cb);\n                cb.get();\n            }\n            connect.herder().ready();\n        } catch (Throwable t) {\n            log.error(\"Stopping after connector error\", t);\n            connect.stop();\n            Exit.exit(0x3);\n        }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest parseConnectorConfigurationFile(String filePath) throws IOException {\n        ObjectMapper objectMapper = new ObjectMapper();\n\n        File connectorConfigurationFile = Paths.get(filePath).toFile();\n        try {\n            Map<String, String> connectorConfigs = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n\n            if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", filePath);\n        }\n\n        try {\n            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest createConnectorRequest = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n            if (createConnectorRequest.config().containsKey(NAME_CONFIG)) {\n                if (!createConnectorRequest.config().get(NAME_CONFIG).equals(createConnectorRequest.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + filePath\n                        + \"'\");\n                }\n            } else {\n                createConnectorRequest.config().put(NAME_CONFIG, createConnectorRequest.name());\n            }\n            return createConnectorRequest;\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                filePath, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> connectorConfigs = Utils.propsToStringMap(Utils.loadProps(filePath));\n        if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n            throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n    }\n\n    @Override\n    protected StandaloneHerder createHerder(StandaloneConfig config, String workerId, Plugins plugins,\n                                  ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy,\n                                  RestServer restServer, RestClient restClient) {\n\n        OffsetBackingStore offsetBackingStore = new FileOffsetBackingStore(plugins.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        offsetBackingStore.configure(config);\n\n        Worker worker = new Worker(workerId, Time.SYSTEM, plugins, config, offsetBackingStore,\n                connectorClientConfigOverridePolicy);\n\n        return new StandaloneHerder(worker, config.kafkaClusterId(), connectorClientConfigOverridePolicy);\n    }\n\n    @Override\n    protected StandaloneConfig createConfig(Map<String, String> workerProps) {\n        return new StandaloneConfig(workerProps);\n    }\n\n    public static void main(String[] args) {\n        ConnectStandalone connectStandalone = new ConnectStandalone(args);\n        connectStandalone.run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "42246ea290ad7ddcdbb733eeea56fd9089126af898d2d97b4c0b46a90549c8da", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "encode-integer-literals", "level": 5, "line_count": 162, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__ConnectStandalone__e0206e2c.java", "order": 5, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-5d9fe0206e2c-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 90, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-20454aa739fb-I06", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... args) {\n        super(args);\n    }\n\n    @Override\n    protected String usage() {\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void processExtraArgs(Connect<StandaloneHerder> connect, String[] extraArgs) {\n        try {\n            for (final String connectorConfigFile : extraArgs) {\n                CreateConnectorRequest createConnectorRequest = parseConnectorConfigurationFile(connectorConfigFile);\n                FutureCallback<Herder.Created<ConnectorInfo>> cb = new FutureCallback<>((error, info) -> {\n                    if (!((error != null))) { log.info(\"Created connector {}\", info.result().name()); } else { log.error(\"Failed to create connector for {}\", connectorConfigFile); }\n                });\n                connect.herder().putConnectorConfig(\n                    createConnectorRequest.name(), createConnectorRequest.config(),\n                    createConnectorRequest.initialTargetState(),\n                    false, cb);\n                cb.get();\n            }\n            connect.herder().ready();\n        } catch (Throwable t) {\n            log.error(\"Stopping after connector error\", t);\n            connect.stop();\n            Exit.exit(3);\n        }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest parseConnectorConfigurationFile(String filePath) throws IOException {\n        ObjectMapper objectMapper = new ObjectMapper();\n\n        File connectorConfigurationFile = Paths.get(filePath).toFile();\n        try {\n            Map<String, String> connectorConfigs = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n\n            if (!((!connectorConfigs.containsKey(NAME_CONFIG)))) {} else {\n                throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", filePath);\n        }\n\n        try {\n            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest createConnectorRequest = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n            if (!((createConnectorRequest.config().containsKey(NAME_CONFIG)))) {\n                createConnectorRequest.config().put(NAME_CONFIG, createConnectorRequest.name());\n            } else {\n                if (!createConnectorRequest.config().get(NAME_CONFIG).equals(createConnectorRequest.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + filePath\n                        + \"'\");\n                }\n            }\n            return createConnectorRequest;\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                filePath, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> connectorConfigs = Utils.propsToStringMap(Utils.loadProps(filePath));\n        if (!((!connectorConfigs.containsKey(NAME_CONFIG)))) {} else {\n            throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n    }\n\n    @Override\n    protected StandaloneHerder createHerder(StandaloneConfig config, String workerId, Plugins plugins,\n                                  ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy,\n                                  RestServer restServer, RestClient restClient) {\n\n        OffsetBackingStore offsetBackingStore = new FileOffsetBackingStore(plugins.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        offsetBackingStore.configure(config);\n\n        Worker worker = new Worker(workerId, Time.SYSTEM, plugins, config, offsetBackingStore,\n                connectorClientConfigOverridePolicy);\n\n        return new StandaloneHerder(worker, config.kafkaClusterId(), connectorClientConfigOverridePolicy);\n    }\n\n    @Override\n    protected StandaloneConfig createConfig(Map<String, String> workerProps) {\n        return new StandaloneConfig(workerProps);\n    }\n\n    public static void main(String[] args) {\n        ConnectStandalone connectStandalone = new ConnectStandalone(args);\n        connectStandalone.run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "711e72f4831abbc0f135afe951fe8b83d892625ffb962842c64df1c2b582cf76", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "invert-conditions", "level": 6, "line_count": 159, "local_path": "expressions/invert-conditions/I06__apache-kafka__ConnectStandalone__4aa739fb.java", "order": 6, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 4}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-20454aa739fb-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 91, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b2acfaeb48e8-I07", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... args) {\n        super(args);\nif (((0x4830 ^ 0x4830) != 0)) { throw new AssertionError(); }\n\n    }\n\n    @Override\n    protected String usage() {\nif (((0xD2F5 ^ 0xD2F5) != 0)) { throw new AssertionError(); }\n\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void processExtraArgs(Connect<StandaloneHerder> connect, String[] extraArgs) {\nif (((0x6D55 ^ 0x6D55) != 0)) { throw new AssertionError(); }\n\n        try {\n            for (final String connectorConfigFile : extraArgs) {\n                CreateConnectorRequest createConnectorRequest = parseConnectorConfigurationFile(connectorConfigFile);\n                FutureCallback<Herder.Created<ConnectorInfo>> cb = new FutureCallback<>((error, info) -> {\n                    if (error != null)\n                        log.error(\"Failed to create connector for {}\", connectorConfigFile);\n                    else\n                        log.info(\"Created connector {}\", info.result().name());\n                });\n                connect.herder().putConnectorConfig(\n                    createConnectorRequest.name(), createConnectorRequest.config(),\n                    createConnectorRequest.initialTargetState(),\n                    false, cb);\n                cb.get();\n            }\n            connect.herder().ready();\n        } catch (Throwable t) {\n            log.error(\"Stopping after connector error\", t);\n            connect.stop();\n            Exit.exit(3);\n        }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest parseConnectorConfigurationFile(String filePath) throws IOException {\nif (((0x9C10 ^ 0x9C10) != 0)) { throw new AssertionError(); }\n\n        ObjectMapper objectMapper = new ObjectMapper();\n\n        File connectorConfigurationFile = Paths.get(filePath).toFile();\n        try {\n            Map<String, String> connectorConfigs = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n\n            if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", filePath);\n        }\n\n        try {\n            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest createConnectorRequest = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n            if (createConnectorRequest.config().containsKey(NAME_CONFIG)) {\n                if (!createConnectorRequest.config().get(NAME_CONFIG).equals(createConnectorRequest.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + filePath\n                        + \"'\");\n                }\n            } else {\n                createConnectorRequest.config().put(NAME_CONFIG, createConnectorRequest.name());\n            }\n            return createConnectorRequest;\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                filePath, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> connectorConfigs = Utils.propsToStringMap(Utils.loadProps(filePath));\n        if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n            throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n    }\n\n    @Override\n    protected StandaloneHerder createHerder(StandaloneConfig config, String workerId, Plugins plugins,\n                                  ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy,\n                                  RestServer restServer, RestClient restClient) {\nif (((0x4B5C ^ 0x4B5C) != 0)) { throw new AssertionError(); }\n\n\n        OffsetBackingStore offsetBackingStore = new FileOffsetBackingStore(plugins.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        offsetBackingStore.configure(config);\n\n        Worker worker = new Worker(workerId, Time.SYSTEM, plugins, config, offsetBackingStore,\n                connectorClientConfigOverridePolicy);\n\n        return new StandaloneHerder(worker, config.kafkaClusterId(), connectorClientConfigOverridePolicy);\n    }\n\n    @Override\n    protected StandaloneConfig createConfig(Map<String, String> workerProps) {\nif (((0x1D96 ^ 0x1D96) != 0)) { throw new AssertionError(); }\n\n        return new StandaloneConfig(workerProps);\n    }\n\n    public static void main(String[] args) {\nif (((0x7E55 ^ 0x7E55) != 0)) { throw new AssertionError(); }\n\n        ConnectStandalone connectStandalone = new ConnectStandalone(args);\n        connectStandalone.run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "9c5beea6357b551be7ca2198193b8f05f75a901bb19e43a89817fbaf6b47bf0b", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "insert-dead-branches", "level": 7, "line_count": 176, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__ConnectStandalone__faeb48e8.java", "order": 7, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 7}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-b2acfaeb48e8-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 92, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9fb71c024eb8-I08", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... args) {\n        super(args);\n    }\n\n    @Override\n    protected String usage() {\n{\n  int factorial = 1;\n  for (int currentFactor = 2; currentFactor <= 4; currentFactor++) {\n    factorial *= currentFactor;\n  }\n}\n\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void processExtraArgs(Connect<StandaloneHerder> connect, String[] extraArgs) {\n        try {\n            for (final String connectorConfigFile : extraArgs) {\n                CreateConnectorRequest createConnectorRequest = parseConnectorConfigurationFile(connectorConfigFile);\n                FutureCallback<Herder.Created<ConnectorInfo>> cb = new FutureCallback<>((error, info) -> {\n                    if (error != null)\n                        log.error(\"Failed to create connector for {}\", connectorConfigFile);\n                    else\n                        log.info(\"Created connector {}\", info.result().name());\n                });\n                connect.herder().putConnectorConfig(\n                    createConnectorRequest.name(), createConnectorRequest.config(),\n                    createConnectorRequest.initialTargetState(),\n                    false, cb);\n                cb.get();\n            }\n            connect.herder().ready();\n        } catch (Throwable t) {\n            log.error(\"Stopping after connector error\", t);\n            connect.stop();\n            Exit.exit(3);\n        }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest parseConnectorConfigurationFile(String filePath) throws IOException {\n        ObjectMapper objectMapper = new ObjectMapper();\n\n        File connectorConfigurationFile = Paths.get(filePath).toFile();\n        try {\n            Map<String, String> connectorConfigs = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n\n            if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", filePath);\n        }\n\n        try {\n            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest createConnectorRequest = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n            if (createConnectorRequest.config().containsKey(NAME_CONFIG)) {\n                if (!createConnectorRequest.config().get(NAME_CONFIG).equals(createConnectorRequest.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + filePath\n                        + \"'\");\n                }\n            } else {\n                createConnectorRequest.config().put(NAME_CONFIG, createConnectorRequest.name());\n            }\n            return createConnectorRequest;\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                filePath, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> connectorConfigs = Utils.propsToStringMap(Utils.loadProps(filePath));\n        if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n            throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n    }\n\n    @Override\n    protected StandaloneHerder createHerder(StandaloneConfig config, String workerId, Plugins plugins,\n                                  ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy,\n                                  RestServer restServer, RestClient restClient) {\n\n        OffsetBackingStore offsetBackingStore = new FileOffsetBackingStore(plugins.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        offsetBackingStore.configure(config);\n\n        Worker worker = new Worker(workerId, Time.SYSTEM, plugins, config, offsetBackingStore,\n                connectorClientConfigOverridePolicy);\n\n        return new StandaloneHerder(worker, config.kafkaClusterId(), connectorClientConfigOverridePolicy);\n    }\n\n    @Override\n    protected StandaloneConfig createConfig(Map<String, String> workerProps) {\n        return new StandaloneConfig(workerProps);\n    }\n\n    public static void main(String[] args) {\n        ConnectStandalone connectStandalone = new ConnectStandalone(args);\n        connectStandalone.run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "fda5fdda6c8f1a407ccf9de5db2a604f12754ed118e5b6c25436ac95d5701f4f", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 169, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__ConnectStandalone__1c024eb8.java", "order": 8, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 6}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-9fb71c024eb8-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 93, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3d9e9d26cd28-I09", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... args) {\n        super(args);\n    }\n\n    @Override\n    protected String usage() {\n{int lI0O_0ce4b630=0x2D0A;boolean lI0O_88b5af58=true;do{lI0O_0ce4b630^=0x2D0A;lI0O_88b5af58=false;}while(lI0O_88b5af58);}\n\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void processExtraArgs(Connect<StandaloneHerder> connect, String[] extraArgs) {\n        try {\n            for (final String connectorConfigFile : extraArgs) {\n                CreateConnectorRequest createConnectorRequest = parseConnectorConfigurationFile(connectorConfigFile);\n                FutureCallback<Herder.Created<ConnectorInfo>> cb = new FutureCallback<>((error, info) -> {\n                    if (error != null)\n                        log.error(\"Failed to create connector for {}\", connectorConfigFile);\n                    else\n                        log.info(\"Created connector {}\", info.result().name());\n                });\n                connect.herder().putConnectorConfig(\n                    createConnectorRequest.name(), createConnectorRequest.config(),\n                    createConnectorRequest.initialTargetState(),\n                    false, cb);\n                cb.get();\n            }\n            connect.herder().ready();\n        } catch (Throwable t) {\n            log.error(\"Stopping after connector error\", t);\n            connect.stop();\n            Exit.exit(3);\n        }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest parseConnectorConfigurationFile(String filePath) throws IOException {\n        ObjectMapper objectMapper = new ObjectMapper();\n\n        File connectorConfigurationFile = Paths.get(filePath).toFile();\n        try {\n            Map<String, String> connectorConfigs = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n\n            if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", filePath);\n        }\n\n        try {\n            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest createConnectorRequest = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n            if (createConnectorRequest.config().containsKey(NAME_CONFIG)) {\n                if (!createConnectorRequest.config().get(NAME_CONFIG).equals(createConnectorRequest.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + filePath\n                        + \"'\");\n                }\n            } else {\n                createConnectorRequest.config().put(NAME_CONFIG, createConnectorRequest.name());\n            }\n            return createConnectorRequest;\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                filePath, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> connectorConfigs = Utils.propsToStringMap(Utils.loadProps(filePath));\n        if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n            throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n    }\n\n    @Override\n    protected StandaloneHerder createHerder(StandaloneConfig config, String workerId, Plugins plugins,\n                                  ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy,\n                                  RestServer restServer, RestClient restClient) {\n\n        OffsetBackingStore offsetBackingStore = new FileOffsetBackingStore(plugins.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        offsetBackingStore.configure(config);\n\n        Worker worker = new Worker(workerId, Time.SYSTEM, plugins, config, offsetBackingStore,\n                connectorClientConfigOverridePolicy);\n\n        return new StandaloneHerder(worker, config.kafkaClusterId(), connectorClientConfigOverridePolicy);\n    }\n\n    @Override\n    protected StandaloneConfig createConfig(Map<String, String> workerProps) {\n        return new StandaloneConfig(workerProps);\n    }\n\n    public static void main(String[] args) {\n        ConnectStandalone connectStandalone = new ConnectStandalone(args);\n        connectStandalone.run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b05741a31694fd0209a6595977e653f1bfff35ffcd0ba6b0f2031b96b4e79838", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 164, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__ConnectStandalone__9d26cd28.java", "order": 9, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 7}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-3d9e9d26cd28-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 94, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d78a831cb630-I10", "source": "package org.apache.kafka.connect.cli; import org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils; import org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException; import org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig; import org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient; import org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo; import org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest; import org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback; import com.fasterxml.jackson.core.exc.StreamReadException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.DatabindException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map; import static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class); public ConnectStandalone(String... args) {\n        super(args);\n    } @Override\n    protected String usage() { return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    } @Override public void processExtraArgs(Connect<StandaloneHerder> connect, String[] extraArgs) { try {\n            for (final String connectorConfigFile : extraArgs) {\n                CreateConnectorRequest createConnectorRequest = parseConnectorConfigurationFile(connectorConfigFile); FutureCallback<Herder.Created<ConnectorInfo>> cb = new FutureCallback<>((error, info) -> {\n                    if (error != null)\n                        log.error(\"Failed to create connector for {}\", connectorConfigFile); else\n                        log.info(\"Created connector {}\", info.result().name());\n                });\n                connect.herder().putConnectorConfig(\n                    createConnectorRequest.name(), createConnectorRequest.config(),\n                    createConnectorRequest.initialTargetState(),\n                    false, cb);\n                cb.get();\n            } connect.herder().ready();\n        } catch (Throwable t) {\n            log.error(\"Stopping after connector error\", t); connect.stop(); Exit.exit(3); }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest parseConnectorConfigurationFile(String filePath) throws IOException { ObjectMapper objectMapper = new ObjectMapper();\n\n        File connectorConfigurationFile = Paths.get(filePath).toFile();\n        try { Map<String, String> connectorConfigs = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n\n            if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\"); }\n            return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n        } catch (StreamReadException | DatabindException e) { log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", filePath);\n        }\n\n        try { objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest createConnectorRequest = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n            if (createConnectorRequest.config().containsKey(NAME_CONFIG)) { if (!createConnectorRequest.config().get(NAME_CONFIG).equals(createConnectorRequest.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + filePath\n                        + \"'\");\n                }\n            } else {\n                createConnectorRequest.config().put(NAME_CONFIG, createConnectorRequest.name());\n            } return createConnectorRequest;\n        } catch (StreamReadException | DatabindException e) { log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                filePath, CreateConnectorRequest.class.getSimpleName());\n        } Map<String, String> connectorConfigs = Utils.propsToStringMap(Utils.loadProps(filePath)); if (!connectorConfigs.containsKey(NAME_CONFIG)) { throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        } return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n    }\n\n    @Override\n    protected StandaloneHerder createHerder(StandaloneConfig config, String workerId, Plugins plugins, ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy,\n                                  RestServer restServer, RestClient restClient) { OffsetBackingStore offsetBackingStore = new FileOffsetBackingStore(plugins.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\"))); offsetBackingStore.configure(config);\n\n        Worker worker = new Worker(workerId, Time.SYSTEM, plugins, config, offsetBackingStore, connectorClientConfigOverridePolicy); return new StandaloneHerder(worker, config.kafkaClusterId(), connectorClientConfigOverridePolicy); } @Override\n    protected StandaloneConfig createConfig(Map<String, String> workerProps) { return new StandaloneConfig(workerProps); }\n\n    public static void main(String[] args) { ConnectStandalone connectStandalone = new ConnectStandalone(args); connectStandalone.run(); }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "7972b958d62628896027ccd8c2a6305f12fc64f33e4f3c8136b3339ae383f17e", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "partially-compact-layout", "level": 10, "line_count": 106, "local_path": "layout/partially-compact-layout/I10__apache-kafka__ConnectStandalone__831cb630.java", "order": 10, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 123, "line_break_groups_removed": 49, "line_breaks_removed": 56, "whitespace_characters_removed": 365}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-d78a831cb630-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 95, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5cad0de03703-I11", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... args) {\n        super(args);\n    }\n\n    @Override\n    protected String usage() {\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void processExtraArgs(Connect<StandaloneHerder> connect, String[] extraArgs) {\n        try {\n            for (final String connectorConfigFile : extraArgs) {\n                CreateConnectorRequest createConnectorRequest = parseConnectorConfigurationFile(connectorConfigFile);\n                FutureCallback<Herder.Created<ConnectorInfo>> cb = new FutureCallback<>((error, info) -> {\n                    if (error != null)\n                        log.error(\"Failed to create connector for {}\", connectorConfigFile);\n                    else\n                        log.info(\"Created connector {}\", info.result().name());\n                });\n                connect.herder().putConnectorConfig(\n                    createConnectorRequest.name(), createConnectorRequest.config(),\n                    createConnectorRequest.initialTargetState(),\n                    false, cb);\n                cb.get();\n            }\n            connect.herder().ready();\n        } catch (Throwable t) {\n            log.error(\"Stopping after connector error\", t);\n            connect.stop();\n            final int a = 1;\n            final int b = 2;\n            Exit.exit((a + b));\n        }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest parseConnectorConfigurationFile(String filePath) throws IOException {\n        ObjectMapper objectMapper = new ObjectMapper();\n\n        File connectorConfigurationFile = Paths.get(filePath).toFile();\n        try {\n            Map<String, String> connectorConfigs = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n\n            if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", filePath);\n        }\n\n        try {\n            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest createConnectorRequest = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n            if (createConnectorRequest.config().containsKey(NAME_CONFIG)) {\n                if (!createConnectorRequest.config().get(NAME_CONFIG).equals(createConnectorRequest.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + filePath\n                        + \"'\");\n                }\n            } else {\n                createConnectorRequest.config().put(NAME_CONFIG, createConnectorRequest.name());\n            }\n            return createConnectorRequest;\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                filePath, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> connectorConfigs = Utils.propsToStringMap(Utils.loadProps(filePath));\n        if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n            throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n    }\n\n    @Override\n    protected StandaloneHerder createHerder(StandaloneConfig config, String workerId, Plugins plugins,\n                                  ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy,\n                                  RestServer restServer, RestClient restClient) {\n\n        OffsetBackingStore offsetBackingStore = new FileOffsetBackingStore(plugins.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        offsetBackingStore.configure(config);\n\n        Worker worker = new Worker(workerId, Time.SYSTEM, plugins, config, offsetBackingStore,\n                connectorClientConfigOverridePolicy);\n\n        return new StandaloneHerder(worker, config.kafkaClusterId(), connectorClientConfigOverridePolicy);\n    }\n\n    @Override\n    protected StandaloneConfig createConfig(Map<String, String> workerProps) {\n        return new StandaloneConfig(workerProps);\n    }\n\n    public static void main(String[] args) {\n        ConnectStandalone connectStandalone = new ConnectStandalone(args);\n        connectStandalone.run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "7b0c621bfb94e7b95d3b050b298e9e8a47bf9691247c2585e2fa8a2b0b8c0250", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 164, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__ConnectStandalone__0de03703.java", "order": 11, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 1, "intermediate_variables_introduced": 2, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-5cad0de03703-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 96, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6eb4f60d6757-I12", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... args) {\n        super(args);\n    }\n\n    @Override\n    protected String usage() {\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void processExtraArgs(Connect<StandaloneHerder> connect, String[] extraArgs) {\n        try {\n            for (final String connectorConfigFile : extraArgs) {\n                CreateConnectorRequest createConnectorRequest = parseConnectorConfigurationFile(connectorConfigFile);\n                FutureCallback<Herder.Created<ConnectorInfo>> cb = new FutureCallback<>((error, info) -> {\n                    if (error != null)\n                        log.error(\"Failed to create connector for {}\", connectorConfigFile);\n                    else\n                        log.info(\"Created connector {}\", info.result().name());\n                });\n                connect.herder().putConnectorConfig(\n                    createConnectorRequest.name(), createConnectorRequest.config(),\n                    createConnectorRequest.initialTargetState(),\n                    false, cb);\n                cb.get();\n            }\n            connect.herder().ready();\n        } catch (Throwable t) {\n            log.error(\"Stopping after connector error\", t);\n            connect.stop();\n            Exit.exit(3);\n        }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest parseConnectorConfigurationFile(String filePath) throws IOException {\n        ObjectMapper objectMapper = new ObjectMapper();\n\n        File connectorConfigurationFile = Paths.get(filePath).toFile();\n        try {\n            Map<String, String> connectorConfigs = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n\n            if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", filePath);\n        }\n\n        try {\n            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest createConnectorRequest = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n            if (createConnectorRequest.config().containsKey(NAME_CONFIG)) {\n                if (!createConnectorRequest.config().get(NAME_CONFIG).equals(createConnectorRequest.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + filePath\n                        + \"'\");\n                }\n            } else {\n                createConnectorRequest.config().put(NAME_CONFIG, createConnectorRequest.name());\n            }\n            return createConnectorRequest;\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                filePath, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> connectorConfigs = Utils.propsToStringMap(Utils.loadProps(filePath));\n        if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n            throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n    }\n\n    @Override\n    protected StandaloneHerder createHerder(StandaloneConfig config, String workerId, Plugins plugins,\n                                  ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy,\n                                  RestServer restServer, RestClient restClient) {\n\n        OffsetBackingStore offsetBackingStore = new FileOffsetBackingStore(plugins.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        offsetBackingStore.configure(config);\n\n        \n\n        return new StandaloneHerder((new Worker(workerId, Time.SYSTEM, plugins, config, offsetBackingStore,\n                connectorClientConfigOverridePolicy)), config.kafkaClusterId(), connectorClientConfigOverridePolicy);\n    }\n\n    @Override\n    protected StandaloneConfig createConfig(Map<String, String> workerProps) {\n        return new StandaloneConfig(workerProps);\n    }\n\n    public static void main(String[] args) {\n        \n        (new ConnectStandalone(args)).run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "e08bcf97f734d4aa9fc2539f3e3e15f0b5892ee06536f6d7eed154d606975e78", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 162, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__ConnectStandalone__f60d6757.java", "order": 12, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 2, "intermediate_variables_available": 2, "intermediate_variables_inlined": 2, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-6eb4f60d6757-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 97, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5c1b0abcf56b-I13", "source": "package org.apache.kafka.connect.cli;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.Exit;\nimport org.apache.kafka.connect.connector.policy.ConnectorClientConfigOverridePolicy;\nimport org.apache.kafka.connect.errors.ConnectException;\nimport org.apache.kafka.connect.json.JsonConverter;\nimport org.apache.kafka.connect.json.JsonConverterConfig;\nimport org.apache.kafka.connect.runtime.Connect;\nimport org.apache.kafka.connect.runtime.Herder;\nimport org.apache.kafka.connect.runtime.Worker;\nimport org.apache.kafka.connect.runtime.isolation.Plugins;\nimport org.apache.kafka.connect.runtime.rest.RestClient;\nimport org.apache.kafka.connect.runtime.rest.RestServer;\nimport org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo;\nimport org.apache.kafka.connect.runtime.rest.entities.CreateConnectorRequest;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneConfig;\nimport org.apache.kafka.connect.runtime.standalone.StandaloneHerder;\nimport org.apache.kafka.connect.storage.FileOffsetBackingStore;\nimport org.apache.kafka.connect.storage.OffsetBackingStore;\nimport org.apache.kafka.connect.util.FutureCallback;\nimport com.fasterxml.jackson.core.exc.StreamReadException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.DatabindException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.io.File;\nimport java.io.IOException;\nimport java.nio.file.Paths;\nimport java.util.Map;\nimport static org.apache.kafka.connect.runtime.ConnectorConfig.NAME_CONFIG;\n\n/**\n * <p>\n * Command line utility that runs Kafka Connect as a standalone process. In this mode, work (connectors and tasks) is not\n * distributed. Instead, all the normal Connect machinery works within a single process. This is useful for ad hoc,\n * small, or experimental jobs.\n * </p>\n * <p>\n * Connector and task configs are stored in memory and are not persistent. However, connector offset data is persistent\n * since it uses file storage (configurable via {@link StandaloneConfig#OFFSET_STORAGE_FILE_FILENAME_CONFIG})\n * </p>\n */\npublic class ConnectStandalone extends AbstractConnectCli<StandaloneHerder, StandaloneConfig> {\n    private static final Logger log = LoggerFactory.getLogger(ConnectStandalone.class);\n\n    public ConnectStandalone(String... args) {\n        super(args);\n    }\n\n    @Override\n    protected String usage() {\n        return \"ConnectStandalone worker.properties [connector1.properties connector2.json ...]\";\n    }\n\n    @Override\n    public void processExtraArgs(Connect<StandaloneHerder> connect, String[] extraArgs) {\n        try {\n            {\n              String[] loopArray = extraArgs;\n              int loopIndex = 0;\n              while (loopIndex < loopArray.length) {\n                final String connectorConfigFile = loopArray[loopIndex++];\n                CreateConnectorRequest createConnectorRequest = parseConnectorConfigurationFile(connectorConfigFile);\n                FutureCallback<Herder.Created<ConnectorInfo>> cb = new FutureCallback<>((error, info) -> {\n                    if (error != null)\n                        log.error(\"Failed to create connector for {}\", connectorConfigFile);\n                    else\n                        log.info(\"Created connector {}\", info.result().name());\n                });\n                connect.herder().putConnectorConfig(\n                    createConnectorRequest.name(), createConnectorRequest.config(),\n                    createConnectorRequest.initialTargetState(),\n                    false, cb);\n                cb.get();\n              }\n            }\n            connect.herder().ready();\n        } catch (Throwable t) {\n            log.error(\"Stopping after connector error\", t);\n            connect.stop();\n            Exit.exit(3);\n        }\n    }\n\n    /**\n     * Parse a connector configuration file into a {@link CreateConnectorRequest}. The file can have any one of the following formats (note that\n     * we attempt to parse the file in this order):\n     * <ol>\n     *     <li>A JSON file containing an Object with only String keys and values that represent the connector configuration.</li>\n     *     <li>A JSON file containing an Object that can be parsed directly into a {@link CreateConnectorRequest}</li>\n     *     <li>A valid Java Properties file (i.e. containing String key/value pairs representing the connector configuration)</li>\n     * </ol>\n     * <p>\n     * Visible for testing.\n     *\n     * @param filePath the path of the connector configuration file\n     * @return the parsed connector configuration in the form of a {@link CreateConnectorRequest}\n     */\n    CreateConnectorRequest parseConnectorConfigurationFile(String filePath) throws IOException {\n        ObjectMapper objectMapper = new ObjectMapper();\n\n        File connectorConfigurationFile = Paths.get(filePath).toFile();\n        try {\n            Map<String, String> connectorConfigs = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n\n            if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n                throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                    + \"configuration\");\n            }\n            return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into a Map with String keys and values\", filePath);\n        }\n\n        try {\n            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);\n            CreateConnectorRequest createConnectorRequest = objectMapper.readValue(connectorConfigurationFile, new TypeReference<>() { });\n            if (createConnectorRequest.config().containsKey(NAME_CONFIG)) {\n                if (!createConnectorRequest.config().get(NAME_CONFIG).equals(createConnectorRequest.name())) {\n                    throw new ConnectException(\"Connector name configuration in 'config' doesn't match the one specified in 'name' at '\" + filePath\n                        + \"'\");\n                }\n            } else {\n                createConnectorRequest.config().put(NAME_CONFIG, createConnectorRequest.name());\n            }\n            return createConnectorRequest;\n        } catch (StreamReadException | DatabindException e) {\n            log.debug(\"Could not parse connector configuration file '{}' into an object of type {}\",\n                filePath, CreateConnectorRequest.class.getSimpleName());\n        }\n\n        Map<String, String> connectorConfigs = Utils.propsToStringMap(Utils.loadProps(filePath));\n        if (!connectorConfigs.containsKey(NAME_CONFIG)) {\n            throw new ConnectException(\"Connector configuration at '\" + filePath + \"' is missing the mandatory '\" + NAME_CONFIG + \"' \"\n                + \"configuration\");\n        }\n        return new CreateConnectorRequest(connectorConfigs.get(NAME_CONFIG), connectorConfigs, null);\n    }\n\n    @Override\n    protected StandaloneHerder createHerder(StandaloneConfig config, String workerId, Plugins plugins,\n                                  ConnectorClientConfigOverridePolicy connectorClientConfigOverridePolicy,\n                                  RestServer restServer, RestClient restClient) {\n\n        OffsetBackingStore offsetBackingStore = new FileOffsetBackingStore(plugins.newInternalConverter(\n                true, JsonConverter.class.getName(), Map.of(JsonConverterConfig.SCHEMAS_ENABLE_CONFIG, \"false\")));\n        offsetBackingStore.configure(config);\n\n        Worker worker = new Worker(workerId, Time.SYSTEM, plugins, config, offsetBackingStore,\n                connectorClientConfigOverridePolicy);\n\n        return new StandaloneHerder(worker, config.kafkaClusterId(), connectorClientConfigOverridePolicy);\n    }\n\n    @Override\n    protected StandaloneConfig createConfig(Map<String, String> workerProps) {\n        return new StandaloneConfig(workerProps);\n    }\n\n    public static void main(String[] args) {\n        ConnectStandalone connectStandalone = new ConnectStandalone(args);\n        connectStandalone.run();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__ConnectStandalone__115f107d.java", "base_sample_id": "source-62d29177e7c759d2", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6985ed8cd8864ac900f842d9556828ab9be3b312a46d3a3fb70da9c2e2248a67", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java", "interference": "lower-for-to-while", "level": 13, "line_count": 167, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__ConnectStandalone__0abcf56b.java", "order": 13, "original_content_sha256": "1d62a232ef5f93747fc64c0f37649be58054414448d298bf0c3eeeb133710ea3", "parent_variant_id": "int-ae1c115f107d-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/cli/ConnectStandalone.java#L56-L183", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 1, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ConnectStandalone", "variant_id": "int-5c1b0abcf56b-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 98, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2d856163e274-SRC", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */\n    protected NumberConverter(String typeName, Schema schema, Serializer<T> serializer, Deserializer<T> deserializer) {\n        this.typeName = typeName;\n        this.schema = schema;\n        this.serializer = serializer;\n        this.deserializer = deserializer;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String version() {\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef config() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs) {\n        NumberConverterConfig conf = new NumberConverterConfig(configs);\n        boolean isKey = conf.type() == ConverterType.KEY;\n        serializer.configure(configs, isKey);\n        deserializer.configure(configs, isKey);\n\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs, boolean isKey) {\n        Map<String, Object> conf = new HashMap<>(configs);\n        conf.put(StringConverterConfig.TYPE_CONFIG, isKey ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        configure(conf);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T cast(Object value) {\n        return (T) value;\n    }\n\n    @Override\n    public byte[] fromConnectData(String topic, Schema schema, Object value) {\n        try {\n            return serializer.serialize(topic, value == null ? null : cast(value));\n        } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + value.getClass() + \"): \", e);\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public SchemaAndValue toConnectData(String topic, byte[] value) {\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(topic, value));\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public byte[] fromConnectHeader(String topic, String headerKey, Schema schema, Object value) {\n        return fromConnectData(topic, schema, value);\n    }\n\n    @Override\n    public SchemaAndValue toConnectHeader(String topic, String headerKey, byte[] value) {\n        return toConnectData(topic, value);\n    }\n\n    @Override\n    public void close() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": null, "level": 0, "line_count": 116, "local_path": "source-original/SRC__apache-kafka__NumberConverter__6163e274.java", "order": 0, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-2d856163e274-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 211, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cd0a87fb1d85-I01", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n\n\n\n\n\n\n\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    \n\n\n\n\n\n\n\n    protected NumberConverter(String typeName, Schema schema, Serializer<T> serializer, Deserializer<T> deserializer) {\n        this.typeName = typeName;\n        this.schema = schema;\n        this.serializer = serializer;\n        this.deserializer = deserializer;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String version() {\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef config() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs) {\n        NumberConverterConfig conf = new NumberConverterConfig(configs);\n        boolean isKey = conf.type() == ConverterType.KEY;\n        serializer.configure(configs, isKey);\n        deserializer.configure(configs, isKey);\n\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs, boolean isKey) {\n        Map<String, Object> conf = new HashMap<>(configs);\n        conf.put(StringConverterConfig.TYPE_CONFIG, isKey ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        configure(conf);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T cast(Object value) {\n        return (T) value;\n    }\n\n    @Override\n    public byte[] fromConnectData(String topic, Schema schema, Object value) {\n        try {\n            return serializer.serialize(topic, value == null ? null : cast(value));\n        } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + value.getClass() + \"): \", e);\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public SchemaAndValue toConnectData(String topic, byte[] value) {\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(topic, value));\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public byte[] fromConnectHeader(String topic, String headerKey, Schema schema, Object value) {\n        return fromConnectData(topic, schema, value);\n    }\n\n    @Override\n    public SchemaAndValue toConnectHeader(String topic, String headerKey, byte[] value) {\n        return toConnectData(topic, value);\n    }\n\n    @Override\n    public void close() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "d54df82c59369097a139396d3e852ce138320f642536057ef2c2109cb8365ee2", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "remove-comments", "level": 1, "line_count": 116, "local_path": "comments/remove-comments/I01__apache-kafka__NumberConverter__87fb1d85.java", "order": 1, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 699, "comments_removed": 2}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-cd0a87fb1d85-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 212, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7e940c6a519f-I02", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */\n    protected NumberConverter(String type2, Schema sch, Serializer<T> ser, Deserializer<T> des) {\n        this.typeName = type2;\n        this.schema = sch;\n        this.serializer = ser;\n        this.deserializer = des;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String ver() {\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef con() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void con2(Map<String, ?> con) {\n        NumberConverterConfig con2 = new NumberConverterConfig(con);\n        boolean is = con2.type() == ConverterType.KEY;\n        serializer.configure(con, is);\n        deserializer.configure(con, is);\n\n    }\n\n    @Override\n    public void con2(Map<String, ?> con3, boolean is2) {\n        Map<String, Object> con4 = new HashMap<>(con3);\n        con4.put(StringConverterConfig.TYPE_CONFIG, is2 ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        con2(con4);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T cas(Object val) {\n        return (T) val;\n    }\n\n    @Override\n    public byte[] from(String top, Schema sch2, Object val2) {\n        try {\n            return serializer.serialize(top, val2 == null ? null : cas(val2));\n        } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + val2.getClass() + \"): \", e);\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public SchemaAndValue to(String top2, byte[] val3) {\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(top2, val3));\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public byte[] from2(String top3, String header, Schema sch3, Object val4) {\n        return from(top3, sch3, val4);\n    }\n\n    @Override\n    public SchemaAndValue to2(String top4, String header2, byte[] val5) {\n        return to(top4, val5);\n    }\n\n    @Override\n    public void clo() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "4954f8935fbca47034532fc1cba0d655b31116af44893ad65355c9ed58d0a31e", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "shorten-identifiers", "level": 2, "line_count": 116, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__NumberConverter__0c6a519f.java", "order": 2, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 29, "identifiers_declared": 26, "local_name_collisions_avoided": 15, "method_calls_renamed": 4, "method_declarations_renamed": 10, "method_name_collisions_avoided": 3, "method_name_groups": 9}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-7e940c6a519f-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 213, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-502c6d51f543-I03", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */\n    protected NumberConverter(String schedule, Schema window, Serializer<T> localEvent, Deserializer<T> sharedRecord) {\n        this.typeName = schedule;\n        this.schema = window;\n        this.serializer = localEvent;\n        this.deserializer = sharedRecord;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String archive() {\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef export() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void sendState(Map<String, ?> profile) {\n        NumberConverterConfig user = new NumberConverterConfig(profile);\n        boolean count = user.type() == ConverterType.KEY;\n        serializer.configure(profile, count);\n        deserializer.configure(profile, count);\n\n    }\n\n    @Override\n    public void sendState(Map<String, ?> address, boolean index) {\n        Map<String, Object> mode = new HashMap<>(address);\n        mode.put(StringConverterConfig.TYPE_CONFIG, index ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        sendState(mode);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T copy(Object price) {\n        return (T) price;\n    }\n\n    @Override\n    public byte[] validateSession(String batch, Schema buffer, Object group) {\n        try {\n            return serializer.serialize(batch, group == null ? null : copy(group));\n        } catch (ClassCastException map) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + group.getClass() + \"): \", map);\n        } catch (SerializationException age) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", map);\n        }\n    }\n\n    @Override\n    public SchemaAndValue removeMessage(String value, byte[] limit) {\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(value, limit));\n        } catch (SerializationException key) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", key);\n        }\n    }\n\n    @Override\n    public byte[] validateRequest(String state, String nextOrder, Schema option, Object cache) {\n        return validateSession(state, option, cache);\n    }\n\n    @Override\n    public SchemaAndValue validateAddress(String order, String localItem, byte[] score) {\n        return removeMessage(order, score);\n    }\n\n    @Override\n    public void clear() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "13f4deba9a812e5a98a7a91a46a88119574c5312aa1eee9dd68c3368162a1809", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "mislead-identifiers", "level": 3, "line_count": 116, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__NumberConverter__6d51f543.java", "order": 3, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 29, "identifiers_declared": 26, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 5, "local_exact_length_matches": 23, "local_random_pool_selections": 26, "local_total_length_difference": 6, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 4, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 10, "method_exact_length_matches": 8, "method_name_groups": 9, "method_random_pool_selections": 9, "method_total_length_difference": 2}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-502c6d51f543-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 214, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-22ad02e3926b-I04", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */\n    protected NumberConverter(String a, Schema b, Serializer<T> c, Deserializer<T> d) {\n        this.typeName = a;\n        this.schema = b;\n        this.serializer = c;\n        this.deserializer = d;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String a() {\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef b() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void c(Map<String, ?> f) {\n        NumberConverterConfig g = new NumberConverterConfig(f);\n        boolean h = g.type() == ConverterType.KEY;\n        serializer.configure(f, h);\n        deserializer.configure(f, h);\n\n    }\n\n    @Override\n    public void c(Map<String, ?> i, boolean j) {\n        Map<String, Object> k = new HashMap<>(i);\n        k.put(StringConverterConfig.TYPE_CONFIG, j ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        c(k);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T d(Object l) {\n        return (T) l;\n    }\n\n    @Override\n    public byte[] e(String m, Schema n, Object o) {\n        try {\n            return serializer.serialize(m, o == null ? null : d(o));\n        } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + o.getClass() + \"): \", e);\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public SchemaAndValue f(String p, byte[] q) {\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(p, q));\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public byte[] g(String r, String s, Schema t, Object u) {\n        return e(r, t, u);\n    }\n\n    @Override\n    public SchemaAndValue h(String v, String w, byte[] x) {\n        return f(v, x);\n    }\n\n    @Override\n    public void i() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e0b8b7649bb211cb90432ac4712d36a8e8631bd24d6692c5679992f8236e6efd", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "garble-identifiers", "level": 4, "line_count": 116, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__NumberConverter__02e3926b.java", "order": 4, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 29, "identifiers_declared": 26, "local_name_collisions_avoided": 0, "method_calls_renamed": 4, "method_declarations_renamed": 10, "method_name_collisions_avoided": 0, "method_name_groups": 9}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-22ad02e3926b-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 215, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-89ae5a3cfb4f-I05", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */\n    protected NumberConverter(String typeName, Schema schema, Serializer<T> serializer, Deserializer<T> deserializer) {\n        this.typeName = typeName;\n        this.schema = schema;\n        this.serializer = serializer;\n        this.deserializer = deserializer;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String version() {\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef config() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs) {\n        NumberConverterConfig conf = new NumberConverterConfig(configs);\n        boolean isKey = conf.type() == ConverterType.KEY;\n        serializer.configure(configs, isKey);\n        deserializer.configure(configs, isKey);\n\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs, boolean isKey) {\n        Map<String, Object> conf = new HashMap<>(configs);\n        conf.put(StringConverterConfig.TYPE_CONFIG, isKey ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        configure(conf);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T cast(Object value) {\n        return (T) value;\n    }\n\n    @Override\n    public byte[] fromConnectData(String topic, Schema schema, Object value) {\n        try {\n            return serializer.serialize(topic, value == null ? null : cast(value));\n        } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + value.getClass() + \"): \", e);\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public SchemaAndValue toConnectData(String topic, byte[] value) {\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(topic, value));\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public byte[] fromConnectHeader(String topic, String headerKey, Schema schema, Object value) {\n        return fromConnectData(topic, schema, value);\n    }\n\n    @Override\n    public SchemaAndValue toConnectHeader(String topic, String headerKey, byte[] value) {\n        return toConnectData(topic, value);\n    }\n\n    @Override\n    public void close() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "encode-integer-literals", "level": 5, "line_count": 116, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__NumberConverter__5a3cfb4f.java", "order": 5, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-89ae5a3cfb4f-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 216, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e24027389304-I06", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */\n    protected NumberConverter(String typeName, Schema schema, Serializer<T> serializer, Deserializer<T> deserializer) {\n        this.typeName = typeName;\n        this.schema = schema;\n        this.serializer = serializer;\n        this.deserializer = deserializer;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String version() {\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef config() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs) {\n        NumberConverterConfig conf = new NumberConverterConfig(configs);\n        boolean isKey = conf.type() == ConverterType.KEY;\n        serializer.configure(configs, isKey);\n        deserializer.configure(configs, isKey);\n\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs, boolean isKey) {\n        Map<String, Object> conf = new HashMap<>(configs);\n        conf.put(StringConverterConfig.TYPE_CONFIG, isKey ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        configure(conf);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T cast(Object value) {\n        return (T) value;\n    }\n\n    @Override\n    public byte[] fromConnectData(String topic, Schema schema, Object value) {\n        try {\n            return serializer.serialize(topic, value == null ? null : cast(value));\n        } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + value.getClass() + \"): \", e);\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public SchemaAndValue toConnectData(String topic, byte[] value) {\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(topic, value));\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public byte[] fromConnectHeader(String topic, String headerKey, Schema schema, Object value) {\n        return fromConnectData(topic, schema, value);\n    }\n\n    @Override\n    public SchemaAndValue toConnectHeader(String topic, String headerKey, byte[] value) {\n        return toConnectData(topic, value);\n    }\n\n    @Override\n    public void close() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "invert-conditions", "level": 6, "line_count": 116, "local_path": "expressions/invert-conditions/I06__apache-kafka__NumberConverter__27389304.java", "order": 6, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-e24027389304-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 217, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-164e225e813e-I07", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */\n    protected NumberConverter(String typeName, Schema schema, Serializer<T> serializer, Deserializer<T> deserializer) {\nif (((0x9A50 ^ 0x9A50) != 0)) { throw new AssertionError(); }\n\n        this.typeName = typeName;\n        this.schema = schema;\n        this.serializer = serializer;\n        this.deserializer = deserializer;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String version() {\nif (((0xC78B ^ 0xC78B) != 0)) { throw new AssertionError(); }\n\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef config() {\nif (((0x8FD5 ^ 0x8FD5) != 0)) { throw new AssertionError(); }\n\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs) {\nif (((0xBE30 ^ 0xBE30) != 0)) { throw new AssertionError(); }\n\n        NumberConverterConfig conf = new NumberConverterConfig(configs);\n        boolean isKey = conf.type() == ConverterType.KEY;\n        serializer.configure(configs, isKey);\n        deserializer.configure(configs, isKey);\n\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs, boolean isKey) {\nif (((0x699E ^ 0x699E) != 0)) { throw new AssertionError(); }\n\n        Map<String, Object> conf = new HashMap<>(configs);\n        conf.put(StringConverterConfig.TYPE_CONFIG, isKey ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        configure(conf);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T cast(Object value) {\nif (((0x4A69 ^ 0x4A69) != 0)) { throw new AssertionError(); }\n\n        return (T) value;\n    }\n\n    @Override\n    public byte[] fromConnectData(String topic, Schema schema, Object value) {\nif (((0xC267 ^ 0xC267) != 0)) { throw new AssertionError(); }\n\n        try {\n            return serializer.serialize(topic, value == null ? null : cast(value));\n        } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + value.getClass() + \"): \", e);\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public SchemaAndValue toConnectData(String topic, byte[] value) {\nif (((0x81D5 ^ 0x81D5) != 0)) { throw new AssertionError(); }\n\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(topic, value));\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public byte[] fromConnectHeader(String topic, String headerKey, Schema schema, Object value) {\nif (((0xD966 ^ 0xD966) != 0)) { throw new AssertionError(); }\n\n        return fromConnectData(topic, schema, value);\n    }\n\n    @Override\n    public SchemaAndValue toConnectHeader(String topic, String headerKey, byte[] value) {\nif (((0xCB74 ^ 0xCB74) != 0)) { throw new AssertionError(); }\n\n        return toConnectData(topic, value);\n    }\n\n    @Override\n    public void close() {\nif (((0xEB6A ^ 0xEB6A) != 0)) { throw new AssertionError(); }\n\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "30c1deee517d4ceae6c15d019145b51cea43a35d9ed8634b47fbc42dab90c906", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "insert-dead-branches", "level": 7, "line_count": 138, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__NumberConverter__225e813e.java", "order": 7, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 11}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-164e225e813e-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 218, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e68e94507a65-I08", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */\n    protected NumberConverter(String typeName, Schema schema, Serializer<T> serializer, Deserializer<T> deserializer) {\n        this.typeName = typeName;\n        this.schema = schema;\n        this.serializer = serializer;\n        this.deserializer = deserializer;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String version() {\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef config() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs) {\n        NumberConverterConfig conf = new NumberConverterConfig(configs);\n        boolean isKey = conf.type() == ConverterType.KEY;\n        serializer.configure(configs, isKey);\n        deserializer.configure(configs, isKey);\n\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs, boolean isKey) {\n        Map<String, Object> conf = new HashMap<>(configs);\n        conf.put(StringConverterConfig.TYPE_CONFIG, isKey ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        configure(conf);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T cast(Object value) {\n        return (T) value;\n    }\n\n    @Override\n    public byte[] fromConnectData(String topic, Schema schema, Object value) {\n        try {\n            return serializer.serialize(topic, value == null ? null : cast(value));\n        } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + value.getClass() + \"): \", e);\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public SchemaAndValue toConnectData(String topic, byte[] value) {\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(topic, value));\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public byte[] fromConnectHeader(String topic, String headerKey, Schema schema, Object value) {\n{\n  int previousNumber = 0;\n  int currentNumber = 1;\n  for (int sequenceStep = 0; sequenceStep < 4; sequenceStep++) {\n    int nextNumber = previousNumber + currentNumber;\n    previousNumber = currentNumber;\n    currentNumber = nextNumber;\n  }\n}\n\n        return fromConnectData(topic, schema, value);\n    }\n\n    @Override\n    public SchemaAndValue toConnectHeader(String topic, String headerKey, byte[] value) {\n        return toConnectData(topic, value);\n    }\n\n    @Override\n    public void close() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "46503adcfd438e1aadd0974f3efd4684c14f70907b4905bb3ac596f93a4f0ead", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 126, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__NumberConverter__94507a65.java", "order": 8, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 9, "readable_template_index": 8}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-e68e94507a65-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 219, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f2968757e734-I09", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */\n    protected NumberConverter(String typeName, Schema schema, Serializer<T> serializer, Deserializer<T> deserializer) {\n        this.typeName = typeName;\n        this.schema = schema;\n        this.serializer = serializer;\n        this.deserializer = deserializer;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String version() {\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef config() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs) {\n        NumberConverterConfig conf = new NumberConverterConfig(configs);\n        boolean isKey = conf.type() == ConverterType.KEY;\n        serializer.configure(configs, isKey);\n        deserializer.configure(configs, isKey);\n\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs, boolean isKey) {\n        Map<String, Object> conf = new HashMap<>(configs);\n        conf.put(StringConverterConfig.TYPE_CONFIG, isKey ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        configure(conf);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T cast(Object value) {\n        return (T) value;\n    }\n\n    @Override\n    public byte[] fromConnectData(String topic, Schema schema, Object value) {\n        try {\n            return serializer.serialize(topic, value == null ? null : cast(value));\n        } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + value.getClass() + \"): \", e);\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public SchemaAndValue toConnectData(String topic, byte[] value) {\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(topic, value));\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public byte[] fromConnectHeader(String topic, String headerKey, Schema schema, Object value) {\n{int lI0O_41d517a4=0x6BE3;boolean lI0O_8718f354=true;do{lI0O_41d517a4^=0x6BE3;lI0O_8718f354=false;}while(lI0O_8718f354);}\n\n        return fromConnectData(topic, schema, value);\n    }\n\n    @Override\n    public SchemaAndValue toConnectHeader(String topic, String headerKey, byte[] value) {\n        return toConnectData(topic, value);\n    }\n\n    @Override\n    public void close() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "29aa7e0a826558b4b63762f9f7f670ac5bb03ec130c640c9075f33cbc61b1fe4", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 118, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__NumberConverter__8757e734.java", "order": 9, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 7}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-f2968757e734-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 220, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b34e8cdfaac4-I10", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException; import org.apache.kafka.common.serialization.Deserializer; import org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils; import org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter; import org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap; import java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter { private final Serializer<T> serializer; private final Deserializer<T> deserializer; private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */ protected NumberConverter(String typeName, Schema schema, Serializer<T> serializer, Deserializer<T> deserializer) {\n        this.typeName = typeName;\n        this.schema = schema;\n        this.serializer = serializer;\n        this.deserializer = deserializer; assert this.serializer != null; assert this.deserializer != null; assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String version() {\n        return AppInfoParser.getVersion(); } @Override\n    public ConfigDef config() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs) {\n        NumberConverterConfig conf = new NumberConverterConfig(configs); boolean isKey = conf.type() == ConverterType.KEY;\n        serializer.configure(configs, isKey); deserializer.configure(configs, isKey);\n\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs, boolean isKey) {\n        Map<String, Object> conf = new HashMap<>(configs);\n        conf.put(StringConverterConfig.TYPE_CONFIG, isKey ? ConverterType.KEY.getName() : ConverterType.VALUE.getName()); configure(conf);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T cast(Object value) {\n        return (T) value; } @Override\n    public byte[] fromConnectData(String topic, Schema schema, Object value) { try { return serializer.serialize(topic, value == null ? null : cast(value)); } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + value.getClass() + \"): \", e); } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e); }\n    }\n\n    @Override\n    public SchemaAndValue toConnectData(String topic, byte[] value) {\n        try { return new SchemaAndValue(schema, deserializer.deserialize(topic, value)); } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        } } @Override public byte[] fromConnectHeader(String topic, String headerKey, Schema schema, Object value) { return fromConnectData(topic, schema, value);\n    }\n\n    @Override public SchemaAndValue toConnectHeader(String topic, String headerKey, byte[] value) { return toConnectData(topic, value); }\n\n    @Override\n    public void close() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\"); Utils.closeQuietly(this.deserializer, \"number converter deserializer\"); }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "b0cb40e53dbd739fbe8f5e591263d7f1ae4b77018f8abf950d589c5b915a0f80", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "partially-compact-layout", "level": 10, "line_count": 78, "local_path": "layout/partially-compact-layout/I10__apache-kafka__NumberConverter__8cdfaac4.java", "order": 10, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 89, "line_break_groups_removed": 35, "line_breaks_removed": 38, "whitespace_characters_removed": 195}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-b34e8cdfaac4-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 221, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0bd43c7f278d-I11", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */\n    protected NumberConverter(String typeName, Schema schema, Serializer<T> serializer, Deserializer<T> deserializer) {\n        this.typeName = typeName;\n        this.schema = schema;\n        this.serializer = serializer;\n        this.deserializer = deserializer;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String version() {\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef config() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs) {\n        NumberConverterConfig conf = new NumberConverterConfig(configs);\n        boolean isKey = conf.type() == ConverterType.KEY;\n        serializer.configure(configs, isKey);\n        deserializer.configure(configs, isKey);\n\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs, boolean isKey) {\n        Map<String, Object> conf = new HashMap<>(configs);\n        conf.put(StringConverterConfig.TYPE_CONFIG, isKey ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        configure(conf);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T cast(Object value) {\n        return (T) value;\n    }\n\n    @Override\n    public byte[] fromConnectData(String topic, Schema schema, Object value) {\n        try {\n            return serializer.serialize(topic, value == null ? null : cast(value));\n        } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + value.getClass() + \"): \", e);\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public SchemaAndValue toConnectData(String topic, byte[] value) {\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(topic, value));\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public byte[] fromConnectHeader(String topic, String headerKey, Schema schema, Object value) {\n        return fromConnectData(topic, schema, value);\n    }\n\n    @Override\n    public SchemaAndValue toConnectHeader(String topic, String headerKey, byte[] value) {\n        return toConnectData(topic, value);\n    }\n\n    @Override\n    public void close() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 116, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__NumberConverter__3c7f278d.java", "order": 11, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-0bd43c7f278d-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 222, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-698667cb79e5-I12", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */\n    protected NumberConverter(String typeName, Schema schema, Serializer<T> serializer, Deserializer<T> deserializer) {\n        this.typeName = typeName;\n        this.schema = schema;\n        this.serializer = serializer;\n        this.deserializer = deserializer;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String version() {\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef config() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs) {\n        NumberConverterConfig conf = new NumberConverterConfig(configs);\n        boolean isKey = conf.type() == ConverterType.KEY;\n        serializer.configure(configs, isKey);\n        deserializer.configure(configs, isKey);\n\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs, boolean isKey) {\n        Map<String, Object> conf = new HashMap<>(configs);\n        conf.put(StringConverterConfig.TYPE_CONFIG, isKey ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        configure(conf);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T cast(Object value) {\n        return (T) value;\n    }\n\n    @Override\n    public byte[] fromConnectData(String topic, Schema schema, Object value) {\n        try {\n            return serializer.serialize(topic, value == null ? null : cast(value));\n        } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + value.getClass() + \"): \", e);\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public SchemaAndValue toConnectData(String topic, byte[] value) {\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(topic, value));\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public byte[] fromConnectHeader(String topic, String headerKey, Schema schema, Object value) {\n        return fromConnectData(topic, schema, value);\n    }\n\n    @Override\n    public SchemaAndValue toConnectHeader(String topic, String headerKey, byte[] value) {\n        return toConnectData(topic, value);\n    }\n\n    @Override\n    public void close() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 116, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__NumberConverter__67cb79e5.java", "order": 12, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-698667cb79e5-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 223, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-93aabaef2b1f-I13", "source": "package org.apache.kafka.connect.converters;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.errors.SerializationException;\nimport org.apache.kafka.common.serialization.Deserializer;\nimport org.apache.kafka.common.serialization.Serializer;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.common.utils.internals.AppInfoParser;\nimport org.apache.kafka.connect.data.Schema;\nimport org.apache.kafka.connect.data.SchemaAndValue;\nimport org.apache.kafka.connect.errors.DataException;\nimport org.apache.kafka.connect.storage.Converter;\nimport org.apache.kafka.connect.storage.ConverterType;\nimport org.apache.kafka.connect.storage.HeaderConverter;\nimport org.apache.kafka.connect.storage.StringConverterConfig;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * {@link Converter} and {@link HeaderConverter} implementation that only supports serializing to and deserializing from number values.\n * It does support handling nulls. When converting from bytes to Kafka Connect format, the converter will always return the specified\n * schema.\n * <p>\n * This implementation currently does nothing with the topic names or header keys.\n */\nabstract class NumberConverter<T extends Number> implements Converter, HeaderConverter {\n\n    private final Serializer<T> serializer;\n    private final Deserializer<T> deserializer;\n    private final String typeName;\n    private final Schema schema;\n\n    /**\n     * Create the converter.\n     *\n     * @param typeName the displayable name of the type; may not be null\n     * @param schema the optional schema to be used for all deserialized forms; may not be null\n     * @param serializer the serializer; may not be null\n     * @param deserializer the deserializer; may not be null\n     */\n    protected NumberConverter(String typeName, Schema schema, Serializer<T> serializer, Deserializer<T> deserializer) {\n        this.typeName = typeName;\n        this.schema = schema;\n        this.serializer = serializer;\n        this.deserializer = deserializer;\n        assert this.serializer != null;\n        assert this.deserializer != null;\n        assert this.typeName != null;\n        assert this.schema != null;\n    }\n\n    @Override\n    public String version() {\n        return AppInfoParser.getVersion();\n    }\n    @Override\n    public ConfigDef config() {\n        return NumberConverterConfig.configDef();\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs) {\n        NumberConverterConfig conf = new NumberConverterConfig(configs);\n        boolean isKey = conf.type() == ConverterType.KEY;\n        serializer.configure(configs, isKey);\n        deserializer.configure(configs, isKey);\n\n    }\n\n    @Override\n    public void configure(Map<String, ?> configs, boolean isKey) {\n        Map<String, Object> conf = new HashMap<>(configs);\n        conf.put(StringConverterConfig.TYPE_CONFIG, isKey ? ConverterType.KEY.getName() : ConverterType.VALUE.getName());\n        configure(conf);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    protected T cast(Object value) {\n        return (T) value;\n    }\n\n    @Override\n    public byte[] fromConnectData(String topic, Schema schema, Object value) {\n        try {\n            return serializer.serialize(topic, value == null ? null : cast(value));\n        } catch (ClassCastException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \" (was \" + value.getClass() + \"): \", e);\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to serialize to \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public SchemaAndValue toConnectData(String topic, byte[] value) {\n        try {\n            return new SchemaAndValue(schema, deserializer.deserialize(topic, value));\n        } catch (SerializationException e) {\n            throw new DataException(\"Failed to deserialize \" + typeName + \": \", e);\n        }\n    }\n\n    @Override\n    public byte[] fromConnectHeader(String topic, String headerKey, Schema schema, Object value) {\n        return fromConnectData(topic, schema, value);\n    }\n\n    @Override\n    public SchemaAndValue toConnectHeader(String topic, String headerKey, byte[] value) {\n        return toConnectData(topic, value);\n    }\n\n    @Override\n    public void close() {\n        Utils.closeQuietly(this.serializer, \"number converter serializer\");\n        Utils.closeQuietly(this.deserializer, \"number converter deserializer\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__NumberConverter__6163e274.java", "base_sample_id": "source-d7bc593d680d8940", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java", "interference": "lower-for-to-while", "level": 13, "line_count": 116, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__NumberConverter__baef2b1f.java", "order": 13, "original_content_sha256": "b40a44cc85601706d2b3f31a4f3e8fdf45fbba6bcf51277fc7573194c1bd59cb", "parent_variant_id": "int-2d856163e274-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/converters/NumberConverter.java#L36-L134", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "NumberConverter", "variant_id": "int-93aabaef2b1f-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 224, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-da0d9b8e790e-SRC", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n/**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */\npublic interface ConfigBackingStore {\n\n    void start();\n\n    void stop();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState snapshot();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean contains(String connector);\n\n    /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void putConnectorConfig(String connector, Map<String, String> properties, TargetState targetState);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */\n    void removeConnectorConfig(String connector);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */\n    void putTaskConfigs(String connector, List<Map<String, String>> configs);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void removeTaskConfigs(String connector);\n\n    /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */\n    void refresh(long timeout, TimeUnit unit) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void putTargetState(String connector, TargetState state);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */\n    void putSessionKey(SessionKey sessionKey);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void putRestartRequest(RestartRequest restartRequest);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */\n    void putTaskCountRecord(String connector, int taskCount);\n\n    /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void claimWritePrivileges() {\n    }\n\n    /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void putLoggerLevel(String namespace, String level);\n\n    /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */\n    void setUpdateListener(UpdateListener listener);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */\n        void onConnectorConfigRemove(String connector);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */\n        void onConnectorConfigUpdate(String connector);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void onTaskConfigUpdate(Collection<ConnectorTaskId> tasks);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void onConnectorTargetStateChange(String connector);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void onSessionKeyUpdate(SessionKey sessionKey);\n\n        /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void onRestartRequest(RestartRequest restartRequest);\n\n        /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */\n        void onLoggingLevelUpdate(String namespace, String level);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": null, "level": 0, "line_count": 168, "local_path": "source-original/SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "order": 0, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-da0d9b8e790e-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 71, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d42d1074a1c5-I01", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n\n\n\n\n\npublic interface ConfigBackingStore {\n\n    void start();\n\n    void stop();\n\n    \n\n\n\n\n    ClusterConfigState snapshot();\n\n    \n\n\n\n\n    boolean contains(String connector);\n\n    \n\n\n\n\n\n\n    void putConnectorConfig(String connector, Map<String, String> properties, TargetState targetState);\n\n    \n\n\n\n    void removeConnectorConfig(String connector);\n\n    \n\n\n\n\n    void putTaskConfigs(String connector, List<Map<String, String>> configs);\n\n    \n\n\n\n    void removeTaskConfigs(String connector);\n\n    \n\n\n\n\n\n\n    void refresh(long timeout, TimeUnit unit) throws TimeoutException;\n\n    \n\n\n\n\n    void putTargetState(String connector, TargetState state);\n\n    \n\n\n\n    void putSessionKey(SessionKey sessionKey);\n\n    \n\n\n\n    void putRestartRequest(RestartRequest restartRequest);\n\n    \n\n\n\n\n    void putTaskCountRecord(String connector, int taskCount);\n\n    \n\n\n\n\n\n    default void claimWritePrivileges() {\n    }\n\n    \n\n\n\n\n\n    void putLoggerLevel(String namespace, String level);\n\n    \n\n\n\n    void setUpdateListener(UpdateListener listener);\n\n    interface UpdateListener {\n        \n\n\n\n        void onConnectorConfigRemove(String connector);\n\n        \n\n\n\n        void onConnectorConfigUpdate(String connector);\n\n        \n\n\n\n        void onTaskConfigUpdate(Collection<ConnectorTaskId> tasks);\n\n        \n\n\n\n        void onConnectorTargetStateChange(String connector);\n\n        \n\n\n\n        void onSessionKeyUpdate(SessionKey sessionKey);\n\n        \n\n\n\n        void onRestartRequest(RestartRequest restartRequest);\n\n        \n\n\n\n\n        void onLoggingLevelUpdate(String namespace, String level);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "9eb9a07a4eb1a945f4d7036d0aa5c3794dda545fcfd7bc15963f2b65d12a8e05", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "remove-comments", "level": 1, "line_count": 168, "local_path": "comments/remove-comments/I01__apache-kafka__ConfigBackingStore__1074a1c5.java", "order": 1, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 4550, "comments_removed": 22}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-d42d1074a1c5-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 72, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-56a2f9083de6-I02", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n/**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */\npublic interface ConfigBackingStore {\n\n    void sta();\n\n    void sto();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState sna();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean con(String con);\n\n    /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void put(String con2, Map<String, String> pro, TargetState target);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */\n    void remove(String con3);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */\n    void put2(String con4, List<Map<String, String>> con5);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void remove2(String con6);\n\n    /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */\n    void ref(long tim, TimeUnit uni) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void put3(String con7, TargetState sta);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */\n    void put4(SessionKey session);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void put5(RestartRequest restart);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */\n    void put6(String con8, int task);\n\n    /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void claim() {\n    }\n\n    /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void put7(String nam, String lev);\n\n    /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */\n    void set(UpdateListener lis);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */\n        void on(String con9);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */\n        void on2(String con10);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void on3(Collection<ConnectorTaskId> tas);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void on4(String con11);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void on5(SessionKey session2);\n\n        /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void on6(RestartRequest restart2);\n\n        /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */\n        void on7(String nam2, String lev2);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "65f502b7ffdaa8c12d9f49801c78640b2deb963cea1175ff4a4e256c0ac0ebdc", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "shorten-identifiers", "level": 2, "line_count": 168, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__ConfigBackingStore__f9083de6.java", "order": 2, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 27, "local_name_collisions_avoided": 14, "method_calls_renamed": 0, "method_declarations_renamed": 23, "method_name_collisions_avoided": 13, "method_name_groups": 23}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-56a2f9083de6-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 73, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-324b82504f9f-I03", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n/**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */\npublic interface ConfigBackingStore {\n\n    void check();\n\n    void read();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState evaluate();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean findNode(String reference);\n\n    /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void validateBalance(String nextCount, Map<String, String> pendingKey, TargetState secureIndex);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */\n    void validateAddress(String nextValue);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */\n    void validateStatus(String nextOrder, List<Map<String, String>> channel);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void validateMessage(String recentKey);\n\n    /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */\n    void sendKey(long feature, TimeUnit path) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void validateRecord(String finalMode, TargetState value);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */\n    void createBalance(SessionKey finalBatch);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void validateAccount(RestartRequest primaryAddress);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */\n    void validateSession(String nextScore, int localUser);\n\n    /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void validateRequest() {\n    }\n\n    /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void validateClient(String finalUser, String limit);\n\n    /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */\n    void refreshAccount(UpdateListener customer);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */\n        void validateMessage(String nextToken);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */\n        void validateBalance(String localNode);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void validateAddress(Collection<ConnectorTaskId> event);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void validateSession(String nextEvent);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void validateRequest(SessionKey finalIndex);\n\n        /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void validateAccount(RestartRequest currentRequest);\n\n        /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */\n        void validateConfig(String nextBatch, String state);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "33dc9415f637878960297e37302881c843b0553810029f000ea92d20c3902d36", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "mislead-identifiers", "level": 3, "line_count": 168, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__ConfigBackingStore__82504f9f.java", "order": 3, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 27, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 8, "local_exact_length_matches": 27, "local_random_pool_selections": 27, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 25, "method_declarations_renamed": 23, "method_exact_length_matches": 9, "method_name_groups": 23, "method_random_pool_selections": 23, "method_total_length_difference": 66}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-324b82504f9f-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 74, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0e3ee326d341-I04", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n/**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */\npublic interface ConfigBackingStore {\n\n    void a();\n\n    void b();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState c();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean d(String a);\n\n    /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void e(String b, Map<String, String> c, TargetState d);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */\n    void f(String e);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */\n    void g(String f, List<Map<String, String>> g);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void h(String h);\n\n    /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */\n    void i(long i, TimeUnit j) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void j(String k, TargetState l);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */\n    void k(SessionKey m);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void l(RestartRequest n);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */\n    void m(String o, int p);\n\n    /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void n() {\n    }\n\n    /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void o(String q, String r);\n\n    /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */\n    void p(UpdateListener s);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */\n        void a(String t);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */\n        void b(String u);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void c(Collection<ConnectorTaskId> v);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void d(String w);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void e(SessionKey x);\n\n        /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void f(RestartRequest y);\n\n        /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */\n        void g(String z, String A);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "2dd6245ff3d6d03c72bedb5f6810b429891256bf29981ed62e5e3b8944f6723d", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "garble-identifiers", "level": 4, "line_count": 168, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__ConfigBackingStore__e326d341.java", "order": 4, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 27, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 23, "method_name_collisions_avoided": 0, "method_name_groups": 23}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-0e3ee326d341-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 75, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4210b0f8b5df-I05", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n/**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */\npublic interface ConfigBackingStore {\n\n    void start();\n\n    void stop();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState snapshot();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean contains(String connector);\n\n    /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void putConnectorConfig(String connector, Map<String, String> properties, TargetState targetState);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */\n    void removeConnectorConfig(String connector);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */\n    void putTaskConfigs(String connector, List<Map<String, String>> configs);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void removeTaskConfigs(String connector);\n\n    /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */\n    void refresh(long timeout, TimeUnit unit) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void putTargetState(String connector, TargetState state);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */\n    void putSessionKey(SessionKey sessionKey);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void putRestartRequest(RestartRequest restartRequest);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */\n    void putTaskCountRecord(String connector, int taskCount);\n\n    /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void claimWritePrivileges() {\n    }\n\n    /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void putLoggerLevel(String namespace, String level);\n\n    /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */\n    void setUpdateListener(UpdateListener listener);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */\n        void onConnectorConfigRemove(String connector);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */\n        void onConnectorConfigUpdate(String connector);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void onTaskConfigUpdate(Collection<ConnectorTaskId> tasks);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void onConnectorTargetStateChange(String connector);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void onSessionKeyUpdate(SessionKey sessionKey);\n\n        /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void onRestartRequest(RestartRequest restartRequest);\n\n        /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */\n        void onLoggingLevelUpdate(String namespace, String level);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "encode-integer-literals", "level": 5, "line_count": 168, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__ConfigBackingStore__b0f8b5df.java", "order": 5, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-4210b0f8b5df-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 76, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6e083a0cd8a7-I06", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n/**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */\npublic interface ConfigBackingStore {\n\n    void start();\n\n    void stop();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState snapshot();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean contains(String connector);\n\n    /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void putConnectorConfig(String connector, Map<String, String> properties, TargetState targetState);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */\n    void removeConnectorConfig(String connector);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */\n    void putTaskConfigs(String connector, List<Map<String, String>> configs);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void removeTaskConfigs(String connector);\n\n    /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */\n    void refresh(long timeout, TimeUnit unit) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void putTargetState(String connector, TargetState state);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */\n    void putSessionKey(SessionKey sessionKey);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void putRestartRequest(RestartRequest restartRequest);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */\n    void putTaskCountRecord(String connector, int taskCount);\n\n    /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void claimWritePrivileges() {\n    }\n\n    /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void putLoggerLevel(String namespace, String level);\n\n    /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */\n    void setUpdateListener(UpdateListener listener);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */\n        void onConnectorConfigRemove(String connector);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */\n        void onConnectorConfigUpdate(String connector);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void onTaskConfigUpdate(Collection<ConnectorTaskId> tasks);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void onConnectorTargetStateChange(String connector);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void onSessionKeyUpdate(SessionKey sessionKey);\n\n        /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void onRestartRequest(RestartRequest restartRequest);\n\n        /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */\n        void onLoggingLevelUpdate(String namespace, String level);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "invert-conditions", "level": 6, "line_count": 168, "local_path": "expressions/invert-conditions/I06__apache-kafka__ConfigBackingStore__3a0cd8a7.java", "order": 6, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-6e083a0cd8a7-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 77, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2c733e911146-I07", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n/**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */\npublic interface ConfigBackingStore {\n\n    void start();\n\n    void stop();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState snapshot();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean contains(String connector);\n\n    /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void putConnectorConfig(String connector, Map<String, String> properties, TargetState targetState);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */\n    void removeConnectorConfig(String connector);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */\n    void putTaskConfigs(String connector, List<Map<String, String>> configs);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void removeTaskConfigs(String connector);\n\n    /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */\n    void refresh(long timeout, TimeUnit unit) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void putTargetState(String connector, TargetState state);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */\n    void putSessionKey(SessionKey sessionKey);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void putRestartRequest(RestartRequest restartRequest);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */\n    void putTaskCountRecord(String connector, int taskCount);\n\n    /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void claimWritePrivileges() {\nif (((0xD515 ^ 0xD515) != 0)) { throw new AssertionError(); }\n\n    }\n\n    /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void putLoggerLevel(String namespace, String level);\n\n    /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */\n    void setUpdateListener(UpdateListener listener);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */\n        void onConnectorConfigRemove(String connector);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */\n        void onConnectorConfigUpdate(String connector);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void onTaskConfigUpdate(Collection<ConnectorTaskId> tasks);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void onConnectorTargetStateChange(String connector);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void onSessionKeyUpdate(SessionKey sessionKey);\n\n        /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void onRestartRequest(RestartRequest restartRequest);\n\n        /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */\n        void onLoggingLevelUpdate(String namespace, String level);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "a8e92eb9fc72cf9bb52877b81e5e55a7f9edc88f6b0230824790c5debc774566", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "insert-dead-branches", "level": 7, "line_count": 170, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__ConfigBackingStore__3e911146.java", "order": 7, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 1}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-2c733e911146-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 78, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d6c318213c1e-I08", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n/**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */\npublic interface ConfigBackingStore {\n\n    void start();\n\n    void stop();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState snapshot();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean contains(String connector);\n\n    /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void putConnectorConfig(String connector, Map<String, String> properties, TargetState targetState);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */\n    void removeConnectorConfig(String connector);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */\n    void putTaskConfigs(String connector, List<Map<String, String>> configs);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void removeTaskConfigs(String connector);\n\n    /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */\n    void refresh(long timeout, TimeUnit unit) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void putTargetState(String connector, TargetState state);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */\n    void putSessionKey(SessionKey sessionKey);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void putRestartRequest(RestartRequest restartRequest);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */\n    void putTaskCountRecord(String connector, int taskCount);\n\n    /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void claimWritePrivileges() {\n{\n  int evenNumberCount = 0;\n  for (int candidateNumber = 0; candidateNumber < 6; candidateNumber++) {\n    if (candidateNumber % 2 == 0) {\n      evenNumberCount++;\n    }\n  }\n}\n\n    }\n\n    /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void putLoggerLevel(String namespace, String level);\n\n    /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */\n    void setUpdateListener(UpdateListener listener);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */\n        void onConnectorConfigRemove(String connector);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */\n        void onConnectorConfigUpdate(String connector);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void onTaskConfigUpdate(Collection<ConnectorTaskId> tasks);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void onConnectorTargetStateChange(String connector);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void onSessionKeyUpdate(SessionKey sessionKey);\n\n        /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void onRestartRequest(RestartRequest restartRequest);\n\n        /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */\n        void onLoggingLevelUpdate(String namespace, String level);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "360d74564104d1527658d915e52f1ff5cc5260fc7c74c6b48a9a7fbb55790dfa", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 177, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__ConfigBackingStore__18213c1e.java", "order": 8, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 2}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-d6c318213c1e-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 79, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-241dcdf23fba-I09", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n/**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */\npublic interface ConfigBackingStore {\n\n    void start();\n\n    void stop();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState snapshot();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean contains(String connector);\n\n    /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void putConnectorConfig(String connector, Map<String, String> properties, TargetState targetState);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */\n    void removeConnectorConfig(String connector);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */\n    void putTaskConfigs(String connector, List<Map<String, String>> configs);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void removeTaskConfigs(String connector);\n\n    /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */\n    void refresh(long timeout, TimeUnit unit) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void putTargetState(String connector, TargetState state);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */\n    void putSessionKey(SessionKey sessionKey);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void putRestartRequest(RestartRequest restartRequest);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */\n    void putTaskCountRecord(String connector, int taskCount);\n\n    /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void claimWritePrivileges() {\n{int lI0O_22d4c374=0xBEC3;boolean lI0O_e56027af=true;do{lI0O_22d4c374^=0xBEC3;lI0O_e56027af=false;}while(lI0O_e56027af);}\n\n    }\n\n    /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void putLoggerLevel(String namespace, String level);\n\n    /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */\n    void setUpdateListener(UpdateListener listener);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */\n        void onConnectorConfigRemove(String connector);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */\n        void onConnectorConfigUpdate(String connector);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void onTaskConfigUpdate(Collection<ConnectorTaskId> tasks);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void onConnectorTargetStateChange(String connector);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void onSessionKeyUpdate(SessionKey sessionKey);\n\n        /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void onRestartRequest(RestartRequest restartRequest);\n\n        /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */\n        void onLoggingLevelUpdate(String namespace, String level);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "16934f7daafe2e3729cddf8f9cac24eafc31fab413c0bf644f05650eaa633214", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 170, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__ConfigBackingStore__cdf23fba.java", "order": 9, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 7}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-241dcdf23fba-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 80, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0b657c58148d-I10", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState; import org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection; import java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException; /**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */ public interface ConfigBackingStore { void start(); void stop();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState snapshot();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean contains(String connector); /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void putConnectorConfig(String connector, Map<String, String> properties, TargetState targetState);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */ void removeConnectorConfig(String connector);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */ void putTaskConfigs(String connector, List<Map<String, String>> configs);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void removeTaskConfigs(String connector); /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */ void refresh(long timeout, TimeUnit unit) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void putTargetState(String connector, TargetState state);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */ void putSessionKey(SessionKey sessionKey);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void putRestartRequest(RestartRequest restartRequest);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */ void putTaskCountRecord(String connector, int taskCount); /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void claimWritePrivileges() {\n    } /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void putLoggerLevel(String namespace, String level); /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */ void setUpdateListener(UpdateListener listener);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */ void onConnectorConfigRemove(String connector);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */ void onConnectorConfigUpdate(String connector);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void onTaskConfigUpdate(Collection<ConnectorTaskId> tasks);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void onConnectorTargetStateChange(String connector);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void onSessionKeyUpdate(SessionKey sessionKey); /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void onRestartRequest(RestartRequest restartRequest); /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */ void onLoggingLevelUpdate(String namespace, String level); }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "41a84d540dbee2b7f25adb4822d6f50f12cdd5c77c06aa5aba16e27c96294905", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "partially-compact-layout", "level": 10, "line_count": 135, "local_path": "layout/partially-compact-layout/I10__apache-kafka__ConfigBackingStore__7c58148d.java", "order": 10, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 59, "line_break_groups_removed": 23, "line_breaks_removed": 33, "whitespace_characters_removed": 106}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-0b657c58148d-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 81, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-af38803478a0-I11", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n/**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */\npublic interface ConfigBackingStore {\n\n    void start();\n\n    void stop();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState snapshot();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean contains(String connector);\n\n    /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void putConnectorConfig(String connector, Map<String, String> properties, TargetState targetState);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */\n    void removeConnectorConfig(String connector);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */\n    void putTaskConfigs(String connector, List<Map<String, String>> configs);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void removeTaskConfigs(String connector);\n\n    /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */\n    void refresh(long timeout, TimeUnit unit) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void putTargetState(String connector, TargetState state);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */\n    void putSessionKey(SessionKey sessionKey);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void putRestartRequest(RestartRequest restartRequest);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */\n    void putTaskCountRecord(String connector, int taskCount);\n\n    /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void claimWritePrivileges() {\n    }\n\n    /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void putLoggerLevel(String namespace, String level);\n\n    /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */\n    void setUpdateListener(UpdateListener listener);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */\n        void onConnectorConfigRemove(String connector);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */\n        void onConnectorConfigUpdate(String connector);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void onTaskConfigUpdate(Collection<ConnectorTaskId> tasks);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void onConnectorTargetStateChange(String connector);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void onSessionKeyUpdate(SessionKey sessionKey);\n\n        /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void onRestartRequest(RestartRequest restartRequest);\n\n        /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */\n        void onLoggingLevelUpdate(String namespace, String level);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 168, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__ConfigBackingStore__803478a0.java", "order": 11, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-af38803478a0-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 82, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ced7eddff29a-I12", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n/**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */\npublic interface ConfigBackingStore {\n\n    void start();\n\n    void stop();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState snapshot();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean contains(String connector);\n\n    /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void putConnectorConfig(String connector, Map<String, String> properties, TargetState targetState);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */\n    void removeConnectorConfig(String connector);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */\n    void putTaskConfigs(String connector, List<Map<String, String>> configs);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void removeTaskConfigs(String connector);\n\n    /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */\n    void refresh(long timeout, TimeUnit unit) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void putTargetState(String connector, TargetState state);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */\n    void putSessionKey(SessionKey sessionKey);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void putRestartRequest(RestartRequest restartRequest);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */\n    void putTaskCountRecord(String connector, int taskCount);\n\n    /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void claimWritePrivileges() {\n    }\n\n    /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void putLoggerLevel(String namespace, String level);\n\n    /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */\n    void setUpdateListener(UpdateListener listener);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */\n        void onConnectorConfigRemove(String connector);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */\n        void onConnectorConfigUpdate(String connector);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void onTaskConfigUpdate(Collection<ConnectorTaskId> tasks);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void onConnectorTargetStateChange(String connector);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void onSessionKeyUpdate(SessionKey sessionKey);\n\n        /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void onRestartRequest(RestartRequest restartRequest);\n\n        /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */\n        void onLoggingLevelUpdate(String namespace, String level);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 168, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__ConfigBackingStore__eddff29a.java", "order": 12, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-ced7eddff29a-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 83, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9e85a223ca89-I13", "source": "package org.apache.kafka.connect.storage;\nimport org.apache.kafka.connect.runtime.RestartRequest;\nimport org.apache.kafka.connect.runtime.SessionKey;\nimport org.apache.kafka.connect.runtime.TargetState;\nimport org.apache.kafka.connect.util.ConnectorTaskId;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\n\n/**\n * An interface to store and retrieve (via {@link #snapshot()}) configuration information that is created during\n * runtime (i.e. not static configuration like the {@link org.apache.kafka.connect.runtime.WorkerConfig worker config}).\n * This configuration information includes connector configs, task configs, connector target states etc.\n */\npublic interface ConfigBackingStore {\n\n    void start();\n\n    void stop();\n\n    /**\n     * Get a snapshot of the current configuration state including all connector and task\n     * configurations.\n     * @return the cluster config state\n     */\n    ClusterConfigState snapshot();\n\n    /**\n     * Check if the store has configuration for a connector.\n     * @param connector name of the connector\n     * @return true if the backing store contains configuration for the connector\n     */\n    boolean contains(String connector);\n\n    /**\n     * Update the configuration for a connector.\n     * @param connector name of the connector\n     * @param properties the connector configuration\n     * @param targetState the desired target state for the connector; may be {@code null} if no target state change is desired. Note that the default\n     *                    target state is {@link TargetState#STARTED} if no target state exists previously\n     */\n    void putConnectorConfig(String connector, Map<String, String> properties, TargetState targetState);\n\n    /**\n     * Remove configuration for a connector\n     * @param connector name of the connector\n     */\n    void removeConnectorConfig(String connector);\n\n    /**\n     * Update the task configurations for a connector.\n     * @param connector name of the connector\n     * @param configs the new task configs for the connector\n     */\n    void putTaskConfigs(String connector, List<Map<String, String>> configs);\n\n    /**\n     * Remove the task configs associated with a connector.\n     * @param connector name of the connector\n     */\n    void removeTaskConfigs(String connector);\n\n    /**\n     * Refresh the backing store. This forces the store to ensure that it has the latest\n     * configs that have been written.\n     * @param timeout max time to wait for the refresh to complete\n     * @param unit unit of timeout\n     * @throws TimeoutException if the timeout expires before the refresh has completed\n     */\n    void refresh(long timeout, TimeUnit unit) throws TimeoutException;\n\n    /**\n     * Transition a connector to a new target state (e.g. paused).\n     * @param connector name of the connector\n     * @param state the state to transition to\n     */\n    void putTargetState(String connector, TargetState state);\n\n    /**\n     * Store a new {@link SessionKey} that can be used to validate internal (i.e., non-user-triggered) inter-worker communication.\n     * @param sessionKey the session key to store\n     */\n    void putSessionKey(SessionKey sessionKey);\n\n    /**\n     * Request a restart of a connector and optionally its tasks.\n     * @param restartRequest the restart request details\n     */\n    void putRestartRequest(RestartRequest restartRequest);\n\n    /**\n     * Record the number of tasks for the connector after a successful round of zombie fencing.\n     * @param connector name of the connector\n     * @param taskCount number of tasks used by the connector\n     */\n    void putTaskCountRecord(String connector, int taskCount);\n\n    /**\n     * Prepare to write to the backing config store. May be required by some implementations (such as those that only permit a single\n     * writer at a time across a cluster of workers) before performing mutating operations like writing configurations, target states, etc.\n     * The default implementation is a no-op; it is the responsibility of the implementing class to override this and document any expectations for\n     * when it must be invoked.\n     */\n    default void claimWritePrivileges() {\n    }\n\n    /**\n     * Emit a new level for the specified logging namespace (and all of its children). This level should\n     * be applied by all workers currently in the cluster, but not to workers that join after it is stored.\n     * @param namespace the namespace to adjust; may not be null\n     * @param level the new level for the namespace; may not be null\n     */\n    void putLoggerLevel(String namespace, String level);\n\n    /**\n     * Set an update listener to get notifications when there are new records written to the backing store.\n     * @param listener non-null listener\n     */\n    void setUpdateListener(UpdateListener listener);\n\n    interface UpdateListener {\n        /**\n         * Invoked when a connector configuration has been removed\n         * @param connector name of the connector\n         */\n        void onConnectorConfigRemove(String connector);\n\n        /**\n         * Invoked when a connector configuration has been updated.\n         * @param connector name of the connector\n         */\n        void onConnectorConfigUpdate(String connector);\n\n        /**\n         * Invoked when task configs are updated.\n         * @param tasks all the tasks whose configs have been updated\n         */\n        void onTaskConfigUpdate(Collection<ConnectorTaskId> tasks);\n\n        /**\n         * Invoked when the user has set a new target state (e.g. paused)\n         * @param connector name of the connector\n         */\n        void onConnectorTargetStateChange(String connector);\n\n        /**\n         * Invoked when the leader has distributed a new session key\n         * @param sessionKey the {@link SessionKey session key}\n         */\n        void onSessionKeyUpdate(SessionKey sessionKey);\n\n        /**\n         * Invoked when a connector and possibly its tasks have been requested to be restarted.\n         * @param restartRequest the {@link RestartRequest restart request}\n         */\n        void onRestartRequest(RestartRequest restartRequest);\n\n        /**\n         * Invoked when a dynamic log level adjustment has been read\n         * @param namespace the namespace to adjust; never null\n         * @param level the level to set the namespace to; never null\n         */\n        void onLoggingLevelUpdate(String namespace, String level);\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__ConfigBackingStore__9b8e790e.java", "base_sample_id": "source-197b70421613625f", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java", "interference": "lower-for-to-while", "level": 13, "line_count": 168, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__ConfigBackingStore__a223ca89.java", "order": 13, "original_content_sha256": "2fbf3271ac0e1f1f60d93bdc37642e479e9e2a1b34c40dda14868387721fa8c3", "parent_variant_id": "int-da0d9b8e790e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "connect/runtime/src/main/java/org/apache/kafka/connect/storage/ConfigBackingStore.java#L30-L186", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "ConfigBackingStore", "variant_id": "int-9e85a223ca89-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 84, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-75f0fe74d47f-SRC", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n/**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager replicaManager) {\n        this.replicaManager = replicaManager;\n    }\n\n    @Override\n    public long offsetForEarliestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForLatestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForTimestamp(TopicIdPartition topicIdPartition, long timestamp, int leaderEpoch) {\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), timestamp, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + timestamp + \" not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata endOffsetMetadata(TopicIdPartition topicIdPartition, FetchIsolation isolation) {\n        Partition partition = partition(topicIdPartition);\n        LogOffsetSnapshot offsetSnapshot = partition.fetchOffsetSnapshot(Optional.empty(), true);\n        if (isolation == FetchIsolation.LOG_END)\n            return offsetSnapshot.logEndOffset();\n        else if (isolation == FetchIsolation.HIGH_WATERMARK)\n            return offsetSnapshot.highWatermark();\n        else\n            return offsetSnapshot.lastStableOffset();\n    }\n\n    @Override\n    public int leaderEpoch(TopicIdPartition topicIdPartition) {\n        return partition(topicIdPartition).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean addPartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        return replicaManager.maybeAddListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    @Override\n    public void removePartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        replicaManager.removeListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    private Partition partition(TopicIdPartition topicIdPartition) {\n        Partition partition = replicaManager.getPartitionOrException(topicIdPartition.topicPartition());\n        if (!partition.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", topicIdPartition.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return partition;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": null, "level": 0, "line_count": 103, "local_path": "source-original/SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "order": 0, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-75f0fe74d47f-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 239, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ac4c5f915cbc-I01", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n\n\n\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager replicaManager) {\n        this.replicaManager = replicaManager;\n    }\n\n    @Override\n    public long offsetForEarliestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n         \n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForLatestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n         \n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForTimestamp(TopicIdPartition topicIdPartition, long timestamp, int leaderEpoch) {\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), timestamp, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + timestamp + \" not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata endOffsetMetadata(TopicIdPartition topicIdPartition, FetchIsolation isolation) {\n        Partition partition = partition(topicIdPartition);\n        LogOffsetSnapshot offsetSnapshot = partition.fetchOffsetSnapshot(Optional.empty(), true);\n        if (isolation == FetchIsolation.LOG_END)\n            return offsetSnapshot.logEndOffset();\n        else if (isolation == FetchIsolation.HIGH_WATERMARK)\n            return offsetSnapshot.highWatermark();\n        else\n            return offsetSnapshot.lastStableOffset();\n    }\n\n    @Override\n    public int leaderEpoch(TopicIdPartition topicIdPartition) {\n        return partition(topicIdPartition).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean addPartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        return replicaManager.maybeAddListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    @Override\n    public void removePartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        replicaManager.removeListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    private Partition partition(TopicIdPartition topicIdPartition) {\n        Partition partition = replicaManager.getPartitionOrException(topicIdPartition.topicPartition());\n        if (!partition.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", topicIdPartition.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return partition;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "a9dae81321700da6cc4da6cb8e2796c937da479bf89569abb1f29a7437ab4263", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "remove-comments", "level": 1, "line_count": 103, "local_path": "comments/remove-comments/I01__apache-kafka__ReplicaManagerPartitionMetadataProvider__5f915cbc.java", "order": 1, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 292, "comments_removed": 3}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-ac4c5f915cbc-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 240, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-468c64e5ac92-I02", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n/**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager replica) {\n        this.replicaManager = replica;\n    }\n\n    @Override\n    public long offset(TopicIdPartition topic, int leader) {\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> timestamp2 = replicaManager.fetchOffsetForTimestamp(\n            topic.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(leader), true).timestampAndOffsetOpt();\n        if (timestamp2.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + topic);\n        }\n        return timestamp2.get().offset;\n    }\n\n    @Override\n    public long offset2(TopicIdPartition topic2, int leader2) {\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> timestamp3 = replicaManager.fetchOffsetForTimestamp(\n            topic2.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leader2), true).timestampAndOffsetOpt();\n        if (timestamp3.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + topic2);\n        }\n        return timestamp3.get().offset;\n    }\n\n    @Override\n    public long offset3(TopicIdPartition topic3, long tim, int leader3) {\n        Optional<FileRecords.TimestampAndOffset> timestamp = replicaManager.fetchOffsetForTimestamp(\n            topic3.topicPartition(), tim, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leader3), true).timestampAndOffsetOpt();\n        if (timestamp.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + tim + \" not found for topic partition: \" + topic3);\n        }\n        return timestamp.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata end(TopicIdPartition topic4, FetchIsolation iso) {\n        Partition par = par(topic4);\n        LogOffsetSnapshot offset2 = par.fetchOffsetSnapshot(Optional.empty(), true);\n        if (iso == FetchIsolation.LOG_END)\n            return offset2.logEndOffset();\n        else if (iso == FetchIsolation.HIGH_WATERMARK)\n            return offset2.highWatermark();\n        else\n            return offset2.lastStableOffset();\n    }\n\n    @Override\n    public int leader(TopicIdPartition topic5) {\n        return par(topic5).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean add(TopicIdPartition topic6, PartitionListener lis) {\n        return replicaManager.maybeAddListener(topic6.topicPartition(), lis);\n    }\n\n    @Override\n    public void remove(TopicIdPartition topic7, PartitionListener lis2) {\n        replicaManager.removeListener(topic7.topicPartition(), lis2);\n    }\n\n    private Partition par(TopicIdPartition topic8) {\n        Partition par2 = replicaManager.getPartitionOrException(topic8.topicPartition());\n        if (!par2.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", topic8.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return par2;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e1cb1a98c796d1eea914ece137240f972358dd0cb20f2bab1f9d000037f4b6a6", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "shorten-identifiers", "level": 2, "line_count": 103, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__ReplicaManagerPartitionMetadataProvider__64e5ac92.java", "order": 2, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 34, "identifiers_declared": 22, "local_name_collisions_avoided": 14, "method_calls_renamed": 2, "method_declarations_renamed": 8, "method_name_collisions_avoided": 2, "method_name_groups": 8}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-468c64e5ac92-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 241, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-179fd04f7041-I03", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n/**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager defaultAccount) {\n        this.replicaManager = defaultAccount;\n    }\n\n    @Override\n    public long validateRequest(TopicIdPartition primaryBalance, int currentData) {\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> pendingBalance = replicaManager.fetchOffsetForTimestamp(\n            primaryBalance.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(currentData), true).timestampAndOffsetOpt();\n        if (pendingBalance.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + primaryBalance);\n        }\n        return pendingBalance.get().offset;\n    }\n\n    @Override\n    public long validateMessage(TopicIdPartition defaultSession, int nextAddress) {\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> currentBalance = replicaManager.fetchOffsetForTimestamp(\n            defaultSession.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(nextAddress), true).timestampAndOffsetOpt();\n        if (currentBalance.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + defaultSession);\n        }\n        return currentBalance.get().offset;\n    }\n\n    @Override\n    public long validateSession(TopicIdPartition pendingRequest, long finalUser, int localWindow) {\n        Optional<FileRecords.TimestampAndOffset> pendingAccount = replicaManager.fetchOffsetForTimestamp(\n            pendingRequest.topicPartition(), finalUser, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(localWindow), true).timestampAndOffsetOpt();\n        if (pendingAccount.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + finalUser + \" not found for topic partition: \" + pendingRequest);\n        }\n        return pendingAccount.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata validateAccount(TopicIdPartition currentAddress, FetchIsolation tempValue) {\n        Partition sharedKey = findCache(currentAddress);\n        LogOffsetSnapshot pendingMessage = sharedKey.fetchOffsetSnapshot(Optional.empty(), true);\n        if (tempValue == FetchIsolation.LOG_END)\n            return pendingMessage.logEndOffset();\n        else if (tempValue == FetchIsolation.HIGH_WATERMARK)\n            return pendingMessage.highWatermark();\n        else\n            return pendingMessage.lastStableOffset();\n    }\n\n    @Override\n    public int buildClient(TopicIdPartition primarySession) {\n        return findCache(primarySession).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean validateBalance(TopicIdPartition pendingAddress, PartitionListener nextPath) {\n        return replicaManager.maybeAddListener(pendingAddress.topicPartition(), nextPath);\n    }\n\n    @Override\n    public void validateAddress(TopicIdPartition primaryRequest, PartitionListener response) {\n        replicaManager.removeListener(primaryRequest.topicPartition(), response);\n    }\n\n    private Partition findCache(TopicIdPartition currentAccount) {\n        Partition nextEvent = replicaManager.getPartitionOrException(currentAccount.topicPartition());\n        if (!nextEvent.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", currentAccount.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return nextEvent;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "35848201b8f642bae41b3e74ebb8d2dd1b5384c1169b600256385fe8d0d8576e", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "mislead-identifiers", "level": 3, "line_count": 103, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__ReplicaManagerPartitionMetadataProvider__d04f7041.java", "order": 3, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 34, "identifiers_declared": 22, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 4, "local_exact_length_matches": 11, "local_random_pool_selections": 22, "local_total_length_difference": 28, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 2, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 4, "method_declarations_renamed": 8, "method_exact_length_matches": 2, "method_name_groups": 8, "method_random_pool_selections": 8, "method_total_length_difference": 38}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-179fd04f7041-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 242, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0d7d911e2022-I04", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n/**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager a) {\n        this.replicaManager = a;\n    }\n\n    @Override\n    public long a(TopicIdPartition b, int c) {\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> d = replicaManager.fetchOffsetForTimestamp(\n            b.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(c), true).timestampAndOffsetOpt();\n        if (d.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + b);\n        }\n        return d.get().offset;\n    }\n\n    @Override\n    public long b(TopicIdPartition e, int f) {\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> g = replicaManager.fetchOffsetForTimestamp(\n            e.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(f), true).timestampAndOffsetOpt();\n        if (g.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + e);\n        }\n        return g.get().offset;\n    }\n\n    @Override\n    public long c(TopicIdPartition h, long i, int j) {\n        Optional<FileRecords.TimestampAndOffset> k = replicaManager.fetchOffsetForTimestamp(\n            h.topicPartition(), i, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(j), true).timestampAndOffsetOpt();\n        if (k.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + i + \" not found for topic partition: \" + h);\n        }\n        return k.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata d(TopicIdPartition l, FetchIsolation m) {\n        Partition n = h(l);\n        LogOffsetSnapshot o = n.fetchOffsetSnapshot(Optional.empty(), true);\n        if (m == FetchIsolation.LOG_END)\n            return o.logEndOffset();\n        else if (m == FetchIsolation.HIGH_WATERMARK)\n            return o.highWatermark();\n        else\n            return o.lastStableOffset();\n    }\n\n    @Override\n    public int e(TopicIdPartition p) {\n        return h(p).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean f(TopicIdPartition q, PartitionListener r) {\n        return replicaManager.maybeAddListener(q.topicPartition(), r);\n    }\n\n    @Override\n    public void g(TopicIdPartition s, PartitionListener t) {\n        replicaManager.removeListener(s.topicPartition(), t);\n    }\n\n    private Partition h(TopicIdPartition u) {\n        Partition v = replicaManager.getPartitionOrException(u.topicPartition());\n        if (!v.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", u.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return v;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "30e7cbf1432b1ab7b795c9748318d564bcabd856ae4e947ed940c2d33aec7eab", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "garble-identifiers", "level": 4, "line_count": 103, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__ReplicaManagerPartitionMetadataProvider__911e2022.java", "order": 4, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 34, "identifiers_declared": 22, "local_name_collisions_avoided": 0, "method_calls_renamed": 2, "method_declarations_renamed": 8, "method_name_collisions_avoided": 0, "method_name_groups": 8}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-0d7d911e2022-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 243, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5dca0a3da3d9-I05", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n/**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager replicaManager) {\n        this.replicaManager = replicaManager;\n    }\n\n    @Override\n    public long offsetForEarliestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForLatestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForTimestamp(TopicIdPartition topicIdPartition, long timestamp, int leaderEpoch) {\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), timestamp, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + timestamp + \" not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata endOffsetMetadata(TopicIdPartition topicIdPartition, FetchIsolation isolation) {\n        Partition partition = partition(topicIdPartition);\n        LogOffsetSnapshot offsetSnapshot = partition.fetchOffsetSnapshot(Optional.empty(), true);\n        if (isolation == FetchIsolation.LOG_END)\n            return offsetSnapshot.logEndOffset();\n        else if (isolation == FetchIsolation.HIGH_WATERMARK)\n            return offsetSnapshot.highWatermark();\n        else\n            return offsetSnapshot.lastStableOffset();\n    }\n\n    @Override\n    public int leaderEpoch(TopicIdPartition topicIdPartition) {\n        return partition(topicIdPartition).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean addPartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        return replicaManager.maybeAddListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    @Override\n    public void removePartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        replicaManager.removeListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    private Partition partition(TopicIdPartition topicIdPartition) {\n        Partition partition = replicaManager.getPartitionOrException(topicIdPartition.topicPartition());\n        if (!partition.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", topicIdPartition.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return partition;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "encode-integer-literals", "level": 5, "line_count": 103, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__ReplicaManagerPartitionMetadataProvider__0a3da3d9.java", "order": 5, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-5dca0a3da3d9-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 244, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7a151194d5fd-I06", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n/**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager replicaManager) {\n        this.replicaManager = replicaManager;\n    }\n\n    @Override\n    public long offsetForEarliestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (!((timestampAndOffset.isEmpty()))) {} else {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForLatestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (!((timestampAndOffset.isEmpty()))) {} else {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForTimestamp(TopicIdPartition topicIdPartition, long timestamp, int leaderEpoch) {\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), timestamp, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (!((timestampAndOffset.isEmpty()))) {} else {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + timestamp + \" not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata endOffsetMetadata(TopicIdPartition topicIdPartition, FetchIsolation isolation) {\n        Partition partition = partition(topicIdPartition);\n        LogOffsetSnapshot offsetSnapshot = partition.fetchOffsetSnapshot(Optional.empty(), true);\n        if (!((isolation == FetchIsolation.LOG_END))) { if (isolation == FetchIsolation.HIGH_WATERMARK)\n            return offsetSnapshot.highWatermark();\n        else\n            return offsetSnapshot.lastStableOffset(); } else { return offsetSnapshot.logEndOffset(); }\n    }\n\n    @Override\n    public int leaderEpoch(TopicIdPartition topicIdPartition) {\n        return partition(topicIdPartition).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean addPartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        return replicaManager.maybeAddListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    @Override\n    public void removePartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        replicaManager.removeListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    private Partition partition(TopicIdPartition topicIdPartition) {\n        Partition partition = replicaManager.getPartitionOrException(topicIdPartition.topicPartition());\n        if (!((!partition.isLeader()))) {} else {\n            log.debug(\"The broker is not the leader for topic partition: {}\", topicIdPartition.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return partition;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "d09f7dc7667b646172638cc3b937ffc38ff400fba35d88a01b190be2fba5f7e2", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "invert-conditions", "level": 6, "line_count": 101, "local_path": "expressions/invert-conditions/I06__apache-kafka__ReplicaManagerPartitionMetadataProvider__1194d5fd.java", "order": 6, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 5}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-7a151194d5fd-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 245, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-23b5023f7895-I07", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n/**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager replicaManager) {\nif (((0xFAFB ^ 0xFAFB) != 0)) { throw new AssertionError(); }\n\n        this.replicaManager = replicaManager;\n    }\n\n    @Override\n    public long offsetForEarliestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\nif (((0xC0D4 ^ 0xC0D4) != 0)) { throw new AssertionError(); }\n\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForLatestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\nif (((0x94DA ^ 0x94DA) != 0)) { throw new AssertionError(); }\n\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForTimestamp(TopicIdPartition topicIdPartition, long timestamp, int leaderEpoch) {\nif (((0x6EB5 ^ 0x6EB5) != 0)) { throw new AssertionError(); }\n\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), timestamp, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + timestamp + \" not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata endOffsetMetadata(TopicIdPartition topicIdPartition, FetchIsolation isolation) {\nif (((0xE0DB ^ 0xE0DB) != 0)) { throw new AssertionError(); }\n\n        Partition partition = partition(topicIdPartition);\n        LogOffsetSnapshot offsetSnapshot = partition.fetchOffsetSnapshot(Optional.empty(), true);\n        if (isolation == FetchIsolation.LOG_END)\n            return offsetSnapshot.logEndOffset();\n        else if (isolation == FetchIsolation.HIGH_WATERMARK)\n            return offsetSnapshot.highWatermark();\n        else\n            return offsetSnapshot.lastStableOffset();\n    }\n\n    @Override\n    public int leaderEpoch(TopicIdPartition topicIdPartition) {\nif (((0x1619 ^ 0x1619) != 0)) { throw new AssertionError(); }\n\n        return partition(topicIdPartition).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean addPartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\nif (((0xE6B6 ^ 0xE6B6) != 0)) { throw new AssertionError(); }\n\n        return replicaManager.maybeAddListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    @Override\n    public void removePartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\nif (((0xEE00 ^ 0xEE00) != 0)) { throw new AssertionError(); }\n\n        replicaManager.removeListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    private Partition partition(TopicIdPartition topicIdPartition) {\nif (((0xC30E ^ 0xC30E) != 0)) { throw new AssertionError(); }\n\n        Partition partition = replicaManager.getPartitionOrException(topicIdPartition.topicPartition());\n        if (!partition.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", topicIdPartition.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return partition;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "4049e917fe50a3063dc6f240871942d1d44387c2494f124fc862fa76a7ac7622", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "insert-dead-branches", "level": 7, "line_count": 121, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__ReplicaManagerPartitionMetadataProvider__023f7895.java", "order": 7, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 9}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-23b5023f7895-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 246, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-91d1c3685055-I08", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n/**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager replicaManager) {\n        this.replicaManager = replicaManager;\n    }\n\n    @Override\n    public long offsetForEarliestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForLatestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForTimestamp(TopicIdPartition topicIdPartition, long timestamp, int leaderEpoch) {\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), timestamp, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + timestamp + \" not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata endOffsetMetadata(TopicIdPartition topicIdPartition, FetchIsolation isolation) {\n        Partition partition = partition(topicIdPartition);\n        LogOffsetSnapshot offsetSnapshot = partition.fetchOffsetSnapshot(Optional.empty(), true);\n        if (isolation == FetchIsolation.LOG_END)\n            return offsetSnapshot.logEndOffset();\n        else if (isolation == FetchIsolation.HIGH_WATERMARK)\n            return offsetSnapshot.highWatermark();\n        else\n            return offsetSnapshot.lastStableOffset();\n    }\n\n    @Override\n    public int leaderEpoch(TopicIdPartition topicIdPartition) {\n{\n  int runningTotal = 0;\n  for (int currentNumber = 1; currentNumber <= 5; currentNumber++) {\n    runningTotal += currentNumber;\n  }\n}\n\n        return partition(topicIdPartition).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean addPartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        return replicaManager.maybeAddListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    @Override\n    public void removePartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        replicaManager.removeListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    private Partition partition(TopicIdPartition topicIdPartition) {\n        Partition partition = replicaManager.getPartitionOrException(topicIdPartition.topicPartition());\n        if (!partition.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", topicIdPartition.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return partition;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "281ef8dcb14af1b777d6a4e6408f76e7ff7e6583f58d42a4deec453bb93849af", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 110, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__ReplicaManagerPartitionMetadataProvider__c3685055.java", "order": 8, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 0}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-91d1c3685055-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 247, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-17f1a4a6b55b-I09", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n/**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager replicaManager) {\n        this.replicaManager = replicaManager;\n    }\n\n    @Override\n    public long offsetForEarliestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForLatestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForTimestamp(TopicIdPartition topicIdPartition, long timestamp, int leaderEpoch) {\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), timestamp, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + timestamp + \" not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata endOffsetMetadata(TopicIdPartition topicIdPartition, FetchIsolation isolation) {\n        Partition partition = partition(topicIdPartition);\n        LogOffsetSnapshot offsetSnapshot = partition.fetchOffsetSnapshot(Optional.empty(), true);\n        if (isolation == FetchIsolation.LOG_END)\n            return offsetSnapshot.logEndOffset();\n        else if (isolation == FetchIsolation.HIGH_WATERMARK)\n            return offsetSnapshot.highWatermark();\n        else\n            return offsetSnapshot.lastStableOffset();\n    }\n\n    @Override\n    public int leaderEpoch(TopicIdPartition topicIdPartition) {\n        return partition(topicIdPartition).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean addPartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        return replicaManager.maybeAddListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    @Override\n    public void removePartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n{int lI0O_7c0e3240=0x871D;lI0O_7c0e3240=((lI0O_7c0e3240^0x871D)|0)&-1;if(((lI0O_7c0e3240&1)==1)){lI0O_7c0e3240^=lI0O_7c0e3240;}}\n\n        replicaManager.removeListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    private Partition partition(TopicIdPartition topicIdPartition) {\n        Partition partition = replicaManager.getPartitionOrException(topicIdPartition.topicPartition());\n        if (!partition.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", topicIdPartition.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return partition;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "616380da400cbda29d69f1b4427ae28273465399318fd6f8cac82d88fc324f11", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 105, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__ReplicaManagerPartitionMetadataProvider__a4a6b55b.java", "order": 9, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-17f1a4a6b55b-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 248, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5c2de1fcc7bc-I10", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager; import org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition; import org.apache.kafka.common.errors.NotLeaderOrFollowerException; import org.apache.kafka.common.errors.OffsetNotAvailableException; import org.apache.kafka.common.record.internal.FileRecords; import org.apache.kafka.common.requests.ListOffsetsRequest; import org.apache.kafka.server.partition.PartitionListener; import org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger; import org.slf4j.LoggerFactory;\nimport java.util.Optional; import scala.Some; /**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */ public class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider { private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager; public ReplicaManagerPartitionMetadataProvider(ReplicaManager replicaManager) { this.replicaManager = replicaManager;\n    } @Override\n    public long offsetForEarliestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp( topicIdPartition.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForLatestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt(); if (timestampAndOffset.isEmpty()) { throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + topicIdPartition);\n        } return timestampAndOffset.get().offset;\n    }\n\n    @Override public long offsetForTimestamp(TopicIdPartition topicIdPartition, long timestamp, int leaderEpoch) {\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp( topicIdPartition.topicPartition(), timestamp, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt(); if (timestampAndOffset.isEmpty()) { throw new OffsetNotAvailableException(\"Offset for timestamp \" + timestamp + \" not found for topic partition: \" + topicIdPartition);\n        } return timestampAndOffset.get().offset; }\n\n    @Override\n    public LogOffsetMetadata endOffsetMetadata(TopicIdPartition topicIdPartition, FetchIsolation isolation) { Partition partition = partition(topicIdPartition);\n        LogOffsetSnapshot offsetSnapshot = partition.fetchOffsetSnapshot(Optional.empty(), true); if (isolation == FetchIsolation.LOG_END)\n            return offsetSnapshot.logEndOffset(); else if (isolation == FetchIsolation.HIGH_WATERMARK)\n            return offsetSnapshot.highWatermark();\n        else return offsetSnapshot.lastStableOffset();\n    } @Override\n    public int leaderEpoch(TopicIdPartition topicIdPartition) {\n        return partition(topicIdPartition).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean addPartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        return replicaManager.maybeAddListener(topicIdPartition.topicPartition(), listener); }\n\n    @Override\n    public void removePartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) { replicaManager.removeListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    private Partition partition(TopicIdPartition topicIdPartition) {\n        Partition partition = replicaManager.getPartitionOrException(topicIdPartition.topicPartition());\n        if (!partition.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", topicIdPartition.topicPartition());\n            throw new NotLeaderOrFollowerException(); } return partition;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "6d9e8b22b93265db805be81b53901d74e9cdb149ed4fcd3503646919293e6fbf", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "partially-compact-layout", "level": 10, "line_count": 64, "local_path": "layout/partially-compact-layout/I10__apache-kafka__ReplicaManagerPartitionMetadataProvider__e1fcc7bc.java", "order": 10, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 86, "line_break_groups_removed": 34, "line_breaks_removed": 39, "whitespace_characters_removed": 181}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-5c2de1fcc7bc-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 249, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fce3b09bba62-I11", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n/**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager replicaManager) {\n        this.replicaManager = replicaManager;\n    }\n\n    @Override\n    public long offsetForEarliestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForLatestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForTimestamp(TopicIdPartition topicIdPartition, long timestamp, int leaderEpoch) {\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), timestamp, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + timestamp + \" not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata endOffsetMetadata(TopicIdPartition topicIdPartition, FetchIsolation isolation) {\n        Partition partition = partition(topicIdPartition);\n        LogOffsetSnapshot offsetSnapshot = partition.fetchOffsetSnapshot(Optional.empty(), true);\n        if (isolation == FetchIsolation.LOG_END)\n            return offsetSnapshot.logEndOffset();\n        else if (isolation == FetchIsolation.HIGH_WATERMARK)\n            return offsetSnapshot.highWatermark();\n        else\n            return offsetSnapshot.lastStableOffset();\n    }\n\n    @Override\n    public int leaderEpoch(TopicIdPartition topicIdPartition) {\n        return partition(topicIdPartition).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean addPartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        return replicaManager.maybeAddListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    @Override\n    public void removePartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        replicaManager.removeListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    private Partition partition(TopicIdPartition topicIdPartition) {\n        Partition partition = replicaManager.getPartitionOrException(topicIdPartition.topicPartition());\n        if (!partition.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", topicIdPartition.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return partition;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 103, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__ReplicaManagerPartitionMetadataProvider__b09bba62.java", "order": 11, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-fce3b09bba62-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 250, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cf986dc28342-I12", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n/**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager replicaManager) {\n        this.replicaManager = replicaManager;\n    }\n\n    @Override\n    public long offsetForEarliestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForLatestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForTimestamp(TopicIdPartition topicIdPartition, long timestamp, int leaderEpoch) {\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), timestamp, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + timestamp + \" not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata endOffsetMetadata(TopicIdPartition topicIdPartition, FetchIsolation isolation) {\n        Partition partition = partition(topicIdPartition);\n        LogOffsetSnapshot offsetSnapshot = partition.fetchOffsetSnapshot(Optional.empty(), true);\n        if (isolation == FetchIsolation.LOG_END)\n            return offsetSnapshot.logEndOffset();\n        else if (isolation == FetchIsolation.HIGH_WATERMARK)\n            return offsetSnapshot.highWatermark();\n        else\n            return offsetSnapshot.lastStableOffset();\n    }\n\n    @Override\n    public int leaderEpoch(TopicIdPartition topicIdPartition) {\n        return partition(topicIdPartition).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean addPartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        return replicaManager.maybeAddListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    @Override\n    public void removePartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        replicaManager.removeListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    private Partition partition(TopicIdPartition topicIdPartition) {\n        Partition partition = replicaManager.getPartitionOrException(topicIdPartition.topicPartition());\n        if (!partition.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", topicIdPartition.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return partition;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 103, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__ReplicaManagerPartitionMetadataProvider__6dc28342.java", "order": 12, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-cf986dc28342-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 251, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a6c0eb6b82c1-I13", "source": "package kafka.server.share;\nimport kafka.cluster.Partition;\nimport kafka.server.ReplicaManager;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.TopicIdPartition;\nimport org.apache.kafka.common.errors.NotLeaderOrFollowerException;\nimport org.apache.kafka.common.errors.OffsetNotAvailableException;\nimport org.apache.kafka.common.record.internal.FileRecords;\nimport org.apache.kafka.common.requests.ListOffsetsRequest;\nimport org.apache.kafka.server.partition.PartitionListener;\nimport org.apache.kafka.server.share.PartitionMetadataProvider;\nimport org.apache.kafka.server.storage.log.FetchIsolation;\nimport org.apache.kafka.storage.internals.log.LogOffsetMetadata;\nimport org.apache.kafka.storage.internals.log.LogOffsetSnapshot;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport java.util.Optional;\nimport scala.Some;\n\n/**\n * Implementation of {@link PartitionMetadataProvider} backed by {@link ReplicaManager}.\n */\npublic class ReplicaManagerPartitionMetadataProvider implements PartitionMetadataProvider {\n\n    private static final Logger log = LoggerFactory.getLogger(ReplicaManagerPartitionMetadataProvider.class);\n\n    private final ReplicaManager replicaManager;\n\n    public ReplicaManagerPartitionMetadataProvider(ReplicaManager replicaManager) {\n        this.replicaManager = replicaManager;\n    }\n\n    @Override\n    public long offsetForEarliestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is only required when reading from the latest offset hence use Option.empty() for now.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.EARLIEST_TIMESTAMP, scala.Option.empty(),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for earliest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForLatestTimestamp(TopicIdPartition topicIdPartition, int leaderEpoch) {\n        // Isolation level is set to READ_UNCOMMITTED, matching with that used in share fetch requests.\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), ListOffsetsRequest.LATEST_TIMESTAMP, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for latest timestamp not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public long offsetForTimestamp(TopicIdPartition topicIdPartition, long timestamp, int leaderEpoch) {\n        Optional<FileRecords.TimestampAndOffset> timestampAndOffset = replicaManager.fetchOffsetForTimestamp(\n            topicIdPartition.topicPartition(), timestamp, new Some<>(IsolationLevel.READ_UNCOMMITTED),\n            Optional.of(leaderEpoch), true).timestampAndOffsetOpt();\n        if (timestampAndOffset.isEmpty()) {\n            throw new OffsetNotAvailableException(\"Offset for timestamp \" + timestamp + \" not found for topic partition: \" + topicIdPartition);\n        }\n        return timestampAndOffset.get().offset;\n    }\n\n    @Override\n    public LogOffsetMetadata endOffsetMetadata(TopicIdPartition topicIdPartition, FetchIsolation isolation) {\n        Partition partition = partition(topicIdPartition);\n        LogOffsetSnapshot offsetSnapshot = partition.fetchOffsetSnapshot(Optional.empty(), true);\n        if (isolation == FetchIsolation.LOG_END)\n            return offsetSnapshot.logEndOffset();\n        else if (isolation == FetchIsolation.HIGH_WATERMARK)\n            return offsetSnapshot.highWatermark();\n        else\n            return offsetSnapshot.lastStableOffset();\n    }\n\n    @Override\n    public int leaderEpoch(TopicIdPartition topicIdPartition) {\n        return partition(topicIdPartition).getLeaderEpoch();\n    }\n\n    @Override\n    public boolean addPartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        return replicaManager.maybeAddListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    @Override\n    public void removePartitionListener(TopicIdPartition topicIdPartition, PartitionListener listener) {\n        replicaManager.removeListener(topicIdPartition.topicPartition(), listener);\n    }\n\n    private Partition partition(TopicIdPartition topicIdPartition) {\n        Partition partition = replicaManager.getPartitionOrException(topicIdPartition.topicPartition());\n        if (!partition.isLeader()) {\n            log.debug(\"The broker is not the leader for topic partition: {}\", topicIdPartition.topicPartition());\n            throw new NotLeaderOrFollowerException();\n        }\n        return partition;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__ReplicaManagerPartitionMetadataProvider__fe74d47f.java", "base_sample_id": "source-42079267bbca9f5a", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java", "interference": "lower-for-to-while", "level": 13, "line_count": 103, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__ReplicaManagerPartitionMetadataProvider__eb6b82c1.java", "order": 13, "original_content_sha256": "5857b3e6640d8ac4857a1fa041e510b8bdfeb5bad677a107a719910dd01b0b6c", "parent_variant_id": "int-75f0fe74d47f-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "core/src/main/java/kafka/server/share/ReplicaManagerPartitionMetadataProvider.java#L41-L124", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ReplicaManagerPartitionMetadataProvider", "variant_id": "int-a6c0eb6b82c1-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 252, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3803b9b0d510-SRC", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong requestTimeoutMsToDeadlineNs(\n        Time time,\n        int millisecondsOffset\n    ) {\n        return OptionalLong.of(time.nanoseconds() + NANOSECONDS.convert(millisecondsOffset, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs\n    ) {\n        this(requestHeader, principal, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this.requestHeader = requestHeader;\n        this.principal = principal;\n        this.deadlineNs = deadlineNs;\n        this.partitionChangeQuotaApplier = partitionChangeQuotaApplier;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs\n    ) {\n        this(requestContext, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) requestContext.requestType())\n                .setRequestApiVersion((short) requestContext.requestVersion())\n                .setCorrelationId(requestContext.correlationId())\n                .setClientId(requestContext.clientId()),\n            requestContext.principal(),\n            deadlineNs,\n            partitionChangeQuotaApplier\n        );\n    }\n\n    public RequestHeaderData requestHeader() {\n        return requestHeader;\n    }\n\n    public KafkaPrincipal principal() {\n        return principal;\n    }\n\n    public OptionalLong deadlineNs() {\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */\n    public void applyPartitionChangeQuota(int requestedPartitionCount) {\n        partitionChangeQuotaApplier.accept(requestedPartitionCount);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": null, "level": 0, "line_count": 93, "local_path": "source-original/SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "order": 0, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-3803b9b0d510-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 127, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dee122d9016e-I01", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong requestTimeoutMsToDeadlineNs(\n        Time time,\n        int millisecondsOffset\n    ) {\n        return OptionalLong.of(time.nanoseconds() + NANOSECONDS.convert(millisecondsOffset, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs\n    ) {\n        this(requestHeader, principal, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this.requestHeader = requestHeader;\n        this.principal = principal;\n        this.deadlineNs = deadlineNs;\n        this.partitionChangeQuotaApplier = partitionChangeQuotaApplier;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs\n    ) {\n        this(requestContext, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) requestContext.requestType())\n                .setRequestApiVersion((short) requestContext.requestVersion())\n                .setCorrelationId(requestContext.correlationId())\n                .setClientId(requestContext.clientId()),\n            requestContext.principal(),\n            deadlineNs,\n            partitionChangeQuotaApplier\n        );\n    }\n\n    public RequestHeaderData requestHeader() {\n        return requestHeader;\n    }\n\n    public KafkaPrincipal principal() {\n        return principal;\n    }\n\n    public OptionalLong deadlineNs() {\n        return deadlineNs;\n    }\n\n    \n\n\n\n\n\n\n    public void applyPartitionChangeQuota(int requestedPartitionCount) {\n        partitionChangeQuotaApplier.accept(requestedPartitionCount);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "a253db4807b9ddc11646d30db42fdd8533027011a87fecb4bd3403bd16d5cad6", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "remove-comments", "level": 1, "line_count": 93, "local_path": "comments/remove-comments/I01__apache-kafka__ControllerRequestContext__22d9016e.java", "order": 1, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 303, "comments_removed": 1}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-dee122d9016e-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 128, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-182e098baa93-I02", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong request(\n        Time tim,\n        int milliseconds\n    ) {\n        return OptionalLong.of(tim.nanoseconds() + NANOSECONDS.convert(milliseconds, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData request,\n        KafkaPrincipal pri,\n        OptionalLong deadline\n    ) {\n        this(request, pri, deadline, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData request2,\n        KafkaPrincipal pri2,\n        OptionalLong deadline2,\n        Consumer<Integer> partition\n    ) {\n        this.requestHeader = request2;\n        this.principal = pri2;\n        this.deadlineNs = deadline2;\n        this.partitionChangeQuotaApplier = partition;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext request3,\n        OptionalLong deadline3\n    ) {\n        this(request3, deadline3, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext request4,\n        OptionalLong deadline4,\n        Consumer<Integer> partition2\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) request4.requestType())\n                .setRequestApiVersion((short) request4.requestVersion())\n                .setCorrelationId(request4.correlationId())\n                .setClientId(request4.clientId()),\n            request4.principal(),\n            deadline4,\n            partition2\n        );\n    }\n\n    public RequestHeaderData request2() {\n        return requestHeader;\n    }\n\n    public KafkaPrincipal pri() {\n        return principal;\n    }\n\n    public OptionalLong deadline() {\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */\n    public void apply(int requested) {\n        partitionChangeQuotaApplier.accept(requested);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "db7c97e99b23bcd73eb974ae67da631b5fa4d1077098fdcca289a92b90500ce4", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "shorten-identifiers", "level": 2, "line_count": 93, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__ControllerRequestContext__098baa93.java", "order": 2, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 19, "identifiers_declared": 15, "local_name_collisions_avoided": 8, "method_calls_renamed": 0, "method_declarations_renamed": 5, "method_name_collisions_avoided": 1, "method_name_groups": 5}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-182e098baa93-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 129, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fe1de3307d59-I03", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong validateAddress(\n        Time user,\n        int defaultBalance\n    ) {\n        return OptionalLong.of(user.nanoseconds() + NANOSECONDS.convert(defaultBalance, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData backupRequest,\n        KafkaPrincipal nextCache,\n        OptionalLong securePath\n    ) {\n        this(backupRequest, nextCache, securePath, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData defaultConfig,\n        KafkaPrincipal timestamp,\n        OptionalLong activeItem,\n        Consumer<Integer> primaryAddress\n    ) {\n        this.requestHeader = defaultConfig;\n        this.principal = timestamp;\n        this.deadlineNs = activeItem;\n        this.partitionChangeQuotaApplier = primaryAddress;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext currentAddress,\n        OptionalLong backupMode\n    ) {\n        this(currentAddress, backupMode, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext currentBalance,\n        OptionalLong recentMode,\n        Consumer<Integer> currentMessage\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) currentBalance.requestType())\n                .setRequestApiVersion((short) currentBalance.requestVersion())\n                .setCorrelationId(currentBalance.correlationId())\n                .setClientId(currentBalance.clientId()),\n            currentBalance.principal(),\n            recentMode,\n            currentMessage\n        );\n    }\n\n    public RequestHeaderData updateMessage() {\n        return requestHeader;\n    }\n\n    public KafkaPrincipal readState() {\n        return principal;\n    }\n\n    public OptionalLong loadRecord() {\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */\n    public void validateBalance(int defaultRequest) {\n        partitionChangeQuotaApplier.accept(defaultRequest);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a91eee29764a341de729c0209489cef310758a7a14d5aa6482d4a8417eb0dcce", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "mislead-identifiers", "level": 3, "line_count": 93, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__ControllerRequestContext__e3307d59.java", "order": 3, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 19, "identifiers_declared": 15, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 11, "local_random_pool_selections": 15, "local_total_length_difference": 39, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 5, "method_exact_length_matches": 3, "method_name_groups": 5, "method_random_pool_selections": 5, "method_total_length_difference": 23}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-fe1de3307d59-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 130, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1d8dce96be1d-I04", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong a(\n        Time a,\n        int b\n    ) {\n        return OptionalLong.of(a.nanoseconds() + NANOSECONDS.convert(b, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData c,\n        KafkaPrincipal d,\n        OptionalLong e\n    ) {\n        this(c, d, e, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData f,\n        KafkaPrincipal g,\n        OptionalLong h,\n        Consumer<Integer> i\n    ) {\n        this.requestHeader = f;\n        this.principal = g;\n        this.deadlineNs = h;\n        this.partitionChangeQuotaApplier = i;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext j,\n        OptionalLong k\n    ) {\n        this(j, k, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext l,\n        OptionalLong m,\n        Consumer<Integer> n\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) l.requestType())\n                .setRequestApiVersion((short) l.requestVersion())\n                .setCorrelationId(l.correlationId())\n                .setClientId(l.clientId()),\n            l.principal(),\n            m,\n            n\n        );\n    }\n\n    public RequestHeaderData b() {\n        return requestHeader;\n    }\n\n    public KafkaPrincipal c() {\n        return principal;\n    }\n\n    public OptionalLong d() {\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */\n    public void e(int o) {\n        partitionChangeQuotaApplier.accept(o);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "bcc392de72687c5ebe15825dd62ec11aeebb9ce1a4f44d546613f64563040d01", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "garble-identifiers", "level": 4, "line_count": 93, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__ControllerRequestContext__ce96be1d.java", "order": 4, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 19, "identifiers_declared": 15, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 5, "method_name_collisions_avoided": 0, "method_name_groups": 5}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-1d8dce96be1d-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 131, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ae7afba62530-I05", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong requestTimeoutMsToDeadlineNs(\n        Time time,\n        int millisecondsOffset\n    ) {\n        return OptionalLong.of(time.nanoseconds() + NANOSECONDS.convert(millisecondsOffset, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs\n    ) {\n        this(requestHeader, principal, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this.requestHeader = requestHeader;\n        this.principal = principal;\n        this.deadlineNs = deadlineNs;\n        this.partitionChangeQuotaApplier = partitionChangeQuotaApplier;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs\n    ) {\n        this(requestContext, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) requestContext.requestType())\n                .setRequestApiVersion((short) requestContext.requestVersion())\n                .setCorrelationId(requestContext.correlationId())\n                .setClientId(requestContext.clientId()),\n            requestContext.principal(),\n            deadlineNs,\n            partitionChangeQuotaApplier\n        );\n    }\n\n    public RequestHeaderData requestHeader() {\n        return requestHeader;\n    }\n\n    public KafkaPrincipal principal() {\n        return principal;\n    }\n\n    public OptionalLong deadlineNs() {\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */\n    public void applyPartitionChangeQuota(int requestedPartitionCount) {\n        partitionChangeQuotaApplier.accept(requestedPartitionCount);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "encode-integer-literals", "level": 5, "line_count": 93, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__ControllerRequestContext__fba62530.java", "order": 5, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-ae7afba62530-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 132, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a73f8a2daaaa-I06", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong requestTimeoutMsToDeadlineNs(\n        Time time,\n        int millisecondsOffset\n    ) {\n        return OptionalLong.of(time.nanoseconds() + NANOSECONDS.convert(millisecondsOffset, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs\n    ) {\n        this(requestHeader, principal, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this.requestHeader = requestHeader;\n        this.principal = principal;\n        this.deadlineNs = deadlineNs;\n        this.partitionChangeQuotaApplier = partitionChangeQuotaApplier;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs\n    ) {\n        this(requestContext, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) requestContext.requestType())\n                .setRequestApiVersion((short) requestContext.requestVersion())\n                .setCorrelationId(requestContext.correlationId())\n                .setClientId(requestContext.clientId()),\n            requestContext.principal(),\n            deadlineNs,\n            partitionChangeQuotaApplier\n        );\n    }\n\n    public RequestHeaderData requestHeader() {\n        return requestHeader;\n    }\n\n    public KafkaPrincipal principal() {\n        return principal;\n    }\n\n    public OptionalLong deadlineNs() {\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */\n    public void applyPartitionChangeQuota(int requestedPartitionCount) {\n        partitionChangeQuotaApplier.accept(requestedPartitionCount);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "invert-conditions", "level": 6, "line_count": 93, "local_path": "expressions/invert-conditions/I06__apache-kafka__ControllerRequestContext__8a2daaaa.java", "order": 6, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-a73f8a2daaaa-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 133, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4a5900db4f74-I07", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong requestTimeoutMsToDeadlineNs(\n        Time time,\n        int millisecondsOffset\n    ) {\nif (((0x1AB2 ^ 0x1AB2) != 0)) { throw new AssertionError(); }\n\n        return OptionalLong.of(time.nanoseconds() + NANOSECONDS.convert(millisecondsOffset, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs\n    ) {\n        this(requestHeader, principal, deadlineNs, __ -> { });\nif (((0x8410 ^ 0x8410) != 0)) { throw new AssertionError(); }\n\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\nif (((0xC2EA ^ 0xC2EA) != 0)) { throw new AssertionError(); }\n\n        this.requestHeader = requestHeader;\n        this.principal = principal;\n        this.deadlineNs = deadlineNs;\n        this.partitionChangeQuotaApplier = partitionChangeQuotaApplier;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs\n    ) {\n        this(requestContext, deadlineNs, __ -> { });\nif (((0xB56E ^ 0xB56E) != 0)) { throw new AssertionError(); }\n\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) requestContext.requestType())\n                .setRequestApiVersion((short) requestContext.requestVersion())\n                .setCorrelationId(requestContext.correlationId())\n                .setClientId(requestContext.clientId()),\n            requestContext.principal(),\n            deadlineNs,\n            partitionChangeQuotaApplier\n        );\nif (((0x62 ^ 0x62) != 0)) { throw new AssertionError(); }\n\n    }\n\n    public RequestHeaderData requestHeader() {\nif (((0xF134 ^ 0xF134) != 0)) { throw new AssertionError(); }\n\n        return requestHeader;\n    }\n\n    public KafkaPrincipal principal() {\nif (((0xA47E ^ 0xA47E) != 0)) { throw new AssertionError(); }\n\n        return principal;\n    }\n\n    public OptionalLong deadlineNs() {\nif (((0xF88F ^ 0xF88F) != 0)) { throw new AssertionError(); }\n\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */\n    public void applyPartitionChangeQuota(int requestedPartitionCount) {\nif (((0x4C59 ^ 0x4C59) != 0)) { throw new AssertionError(); }\n\n        partitionChangeQuotaApplier.accept(requestedPartitionCount);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "bcc82594252e3063dd9e368aea431595a3ed58544e16d53c16c9bdca7c92c2af", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "insert-dead-branches", "level": 7, "line_count": 111, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__ControllerRequestContext__00db4f74.java", "order": 7, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 9}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-4a5900db4f74-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 134, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d97445a1e76c-I08", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong requestTimeoutMsToDeadlineNs(\n        Time time,\n        int millisecondsOffset\n    ) {\n        return OptionalLong.of(time.nanoseconds() + NANOSECONDS.convert(millisecondsOffset, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs\n    ) {\n        this(requestHeader, principal, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this.requestHeader = requestHeader;\n        this.principal = principal;\n        this.deadlineNs = deadlineNs;\n        this.partitionChangeQuotaApplier = partitionChangeQuotaApplier;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs\n    ) {\n        this(requestContext, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) requestContext.requestType())\n                .setRequestApiVersion((short) requestContext.requestVersion())\n                .setCorrelationId(requestContext.correlationId())\n                .setClientId(requestContext.clientId()),\n            requestContext.principal(),\n            deadlineNs,\n            partitionChangeQuotaApplier\n        );\n    }\n\n    public RequestHeaderData requestHeader() {\n        return requestHeader;\n    }\n\n    public KafkaPrincipal principal() {\n{\n  int remainingSteps = 3;\n  while (remainingSteps > 0) {\n    remainingSteps--;\n  }\n}\n\n        return principal;\n    }\n\n    public OptionalLong deadlineNs() {\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */\n    public void applyPartitionChangeQuota(int requestedPartitionCount) {\n        partitionChangeQuotaApplier.accept(requestedPartitionCount);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "1aacd3582a4a9e78f309c8c3dc50d6902e029542ca97dcb5e9058a5caba5595b", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 100, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__ControllerRequestContext__45a1e76c.java", "order": 8, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 1}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-d97445a1e76c-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 135, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2121c8097198-I09", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong requestTimeoutMsToDeadlineNs(\n        Time time,\n        int millisecondsOffset\n    ) {\n        return OptionalLong.of(time.nanoseconds() + NANOSECONDS.convert(millisecondsOffset, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs\n    ) {\n        this(requestHeader, principal, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this.requestHeader = requestHeader;\n        this.principal = principal;\n        this.deadlineNs = deadlineNs;\n        this.partitionChangeQuotaApplier = partitionChangeQuotaApplier;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs\n    ) {\n        this(requestContext, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) requestContext.requestType())\n                .setRequestApiVersion((short) requestContext.requestVersion())\n                .setCorrelationId(requestContext.correlationId())\n                .setClientId(requestContext.clientId()),\n            requestContext.principal(),\n            deadlineNs,\n            partitionChangeQuotaApplier\n        );\n    }\n\n    public RequestHeaderData requestHeader() {\n        return requestHeader;\n    }\n\n    public KafkaPrincipal principal() {\n        return principal;\n    }\n\n    public OptionalLong deadlineNs() {\n{int lI0O_4ebc1c37=0x993;boolean lI0O_fa6192e1=true;do{lI0O_4ebc1c37^=0x993;lI0O_fa6192e1=false;}while(lI0O_fa6192e1);}\n\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */\n    public void applyPartitionChangeQuota(int requestedPartitionCount) {\n        partitionChangeQuotaApplier.accept(requestedPartitionCount);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "9fda029b6937a2ae8611e2b5ca4065f8623fe7c219300314ed24f963a21da0fc", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 95, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__ControllerRequestContext__c8097198.java", "order": 9, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 7}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-2121c8097198-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 136, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-901a4c999de0-I10", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData; import org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer; import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext { public static OptionalLong requestTimeoutMsToDeadlineNs(\n        Time time, int millisecondsOffset\n    ) {\n        return OptionalLong.of(time.nanoseconds() + NANOSECONDS.convert(millisecondsOffset, MILLISECONDS)); }\n\n    private final KafkaPrincipal principal; private final OptionalLong deadlineNs; private final RequestHeaderData requestHeader; private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader, KafkaPrincipal principal, OptionalLong deadlineNs ) { this(requestHeader, principal, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) { this.requestHeader = requestHeader;\n        this.principal = principal;\n        this.deadlineNs = deadlineNs;\n        this.partitionChangeQuotaApplier = partitionChangeQuotaApplier; }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs\n    ) { this(requestContext, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this( new RequestHeaderData()\n                .setRequestApiKey((short) requestContext.requestType())\n                .setRequestApiVersion((short) requestContext.requestVersion())\n                .setCorrelationId(requestContext.correlationId()) .setClientId(requestContext.clientId()),\n            requestContext.principal(), deadlineNs, partitionChangeQuotaApplier );\n    }\n\n    public RequestHeaderData requestHeader() { return requestHeader; } public KafkaPrincipal principal() { return principal; } public OptionalLong deadlineNs() {\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */ public void applyPartitionChangeQuota(int requestedPartitionCount) {\n        partitionChangeQuotaApplier.accept(requestedPartitionCount); }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "5ee7302b979f466001069102962774ed2044ec9894c35bf9035f1ea2ad350c02", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "partially-compact-layout", "level": 10, "line_count": 60, "local_path": "layout/partially-compact-layout/I10__apache-kafka__ControllerRequestContext__4c999de0.java", "order": 10, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 74, "line_break_groups_removed": 29, "line_breaks_removed": 33, "whitespace_characters_removed": 180}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-901a4c999de0-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 137, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6fae5294d142-I11", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong requestTimeoutMsToDeadlineNs(\n        Time time,\n        int millisecondsOffset\n    ) {\n        return OptionalLong.of(time.nanoseconds() + NANOSECONDS.convert(millisecondsOffset, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs\n    ) {\n        this(requestHeader, principal, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this.requestHeader = requestHeader;\n        this.principal = principal;\n        this.deadlineNs = deadlineNs;\n        this.partitionChangeQuotaApplier = partitionChangeQuotaApplier;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs\n    ) {\n        this(requestContext, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) requestContext.requestType())\n                .setRequestApiVersion((short) requestContext.requestVersion())\n                .setCorrelationId(requestContext.correlationId())\n                .setClientId(requestContext.clientId()),\n            requestContext.principal(),\n            deadlineNs,\n            partitionChangeQuotaApplier\n        );\n    }\n\n    public RequestHeaderData requestHeader() {\n        return requestHeader;\n    }\n\n    public KafkaPrincipal principal() {\n        return principal;\n    }\n\n    public OptionalLong deadlineNs() {\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */\n    public void applyPartitionChangeQuota(int requestedPartitionCount) {\n        partitionChangeQuotaApplier.accept(requestedPartitionCount);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 93, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__ControllerRequestContext__5294d142.java", "order": 11, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-6fae5294d142-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 138, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1de46e47500d-I12", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong requestTimeoutMsToDeadlineNs(\n        Time time,\n        int millisecondsOffset\n    ) {\n        return OptionalLong.of(time.nanoseconds() + NANOSECONDS.convert(millisecondsOffset, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs\n    ) {\n        this(requestHeader, principal, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this.requestHeader = requestHeader;\n        this.principal = principal;\n        this.deadlineNs = deadlineNs;\n        this.partitionChangeQuotaApplier = partitionChangeQuotaApplier;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs\n    ) {\n        this(requestContext, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) requestContext.requestType())\n                .setRequestApiVersion((short) requestContext.requestVersion())\n                .setCorrelationId(requestContext.correlationId())\n                .setClientId(requestContext.clientId()),\n            requestContext.principal(),\n            deadlineNs,\n            partitionChangeQuotaApplier\n        );\n    }\n\n    public RequestHeaderData requestHeader() {\n        return requestHeader;\n    }\n\n    public KafkaPrincipal principal() {\n        return principal;\n    }\n\n    public OptionalLong deadlineNs() {\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */\n    public void applyPartitionChangeQuota(int requestedPartitionCount) {\n        partitionChangeQuotaApplier.accept(requestedPartitionCount);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 93, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__ControllerRequestContext__6e47500d.java", "order": 12, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-1de46e47500d-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 139, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-385e590bb62e-I13", "source": "package org.apache.kafka.controller;\nimport org.apache.kafka.common.errors.ThrottlingQuotaExceededException;\nimport org.apache.kafka.common.message.RequestHeaderData;\nimport org.apache.kafka.common.security.auth.KafkaPrincipal;\nimport org.apache.kafka.common.utils.Time;\nimport org.apache.kafka.server.authorizer.AuthorizableRequestContext;\nimport java.util.OptionalLong;\nimport java.util.function.Consumer;\nimport static java.util.concurrent.TimeUnit.MILLISECONDS;\nimport static java.util.concurrent.TimeUnit.NANOSECONDS;\n\npublic class ControllerRequestContext {\n\n    public static OptionalLong requestTimeoutMsToDeadlineNs(\n        Time time,\n        int millisecondsOffset\n    ) {\n        return OptionalLong.of(time.nanoseconds() + NANOSECONDS.convert(millisecondsOffset, MILLISECONDS));\n    }\n\n    private final KafkaPrincipal principal;\n    private final OptionalLong deadlineNs;\n    private final RequestHeaderData requestHeader;\n\n    private final Consumer<Integer> partitionChangeQuotaApplier;\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs\n    ) {\n        this(requestHeader, principal, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        RequestHeaderData requestHeader,\n        KafkaPrincipal principal,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this.requestHeader = requestHeader;\n        this.principal = principal;\n        this.deadlineNs = deadlineNs;\n        this.partitionChangeQuotaApplier = partitionChangeQuotaApplier;\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs\n    ) {\n        this(requestContext, deadlineNs, __ -> { });\n    }\n\n    public ControllerRequestContext(\n        AuthorizableRequestContext requestContext,\n        OptionalLong deadlineNs,\n        Consumer<Integer> partitionChangeQuotaApplier\n    ) {\n        this(\n            new RequestHeaderData()\n                .setRequestApiKey((short) requestContext.requestType())\n                .setRequestApiVersion((short) requestContext.requestVersion())\n                .setCorrelationId(requestContext.correlationId())\n                .setClientId(requestContext.clientId()),\n            requestContext.principal(),\n            deadlineNs,\n            partitionChangeQuotaApplier\n        );\n    }\n\n    public RequestHeaderData requestHeader() {\n        return requestHeader;\n    }\n\n    public KafkaPrincipal principal() {\n        return principal;\n    }\n\n    public OptionalLong deadlineNs() {\n        return deadlineNs;\n    }\n\n    /**\n     * Apply the partition change quota.\n     *\n     * @param requestedPartitionCount           The value to apply.\n     * @throws ThrottlingQuotaExceededException If recording this value moves a metric beyond its configured\n     *                                          maximum or minimum bound\n     */\n    public void applyPartitionChangeQuota(int requestedPartitionCount) {\n        partitionChangeQuotaApplier.accept(requestedPartitionCount);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__ControllerRequestContext__b9b0d510.java", "base_sample_id": "source-1714d8d665999f7a", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java", "interference": "lower-for-to-while", "level": 13, "line_count": 93, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__ControllerRequestContext__590bb62e.java", "order": 13, "original_content_sha256": "090c2c472740e7d8799db209466e29c23bc8ab6954554c4dfc3d80aae20c9415", "parent_variant_id": "int-3803b9b0d510-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/ControllerRequestContext.java#L33-L114", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ControllerRequestContext", "variant_id": "int-385e590bb62e-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 140, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-66a2b032168b-SRC", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean isTimeoutException(Throwable exception) {\n        if (exception == null) return false;\n        if (exception instanceof ExecutionException) {\n            exception = exception.getCause();\n            if (exception == null) return false;\n        }\n        return exception instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newPreMigrationException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newWrongControllerException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    controllerId.getAsInt() + \".\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": null, "level": 0, "line_count": 52, "local_path": "source-original/SRC__apache-kafka__ControllerExceptions__b032168b.java", "order": 0, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-66a2b032168b-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 113, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b50ebc1ce280-I01", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    \n\n\n\n\n\n    public static boolean isTimeoutException(Throwable exception) {\n        if (exception == null) return false;\n        if (exception instanceof ExecutionException) {\n            exception = exception.getCause();\n            if (exception == null) return false;\n        }\n        return exception instanceof TimeoutException;\n    }\n\n    \n\n\n\n\n\n\n    public static NotControllerException newPreMigrationException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n\n    \n\n\n\n\n\n    public static NotControllerException newWrongControllerException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    controllerId.getAsInt() + \".\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "c7c06fb5eb74f28edef45cb72c5652fc0f40284659730d6502a2d40bd44c2067", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "remove-comments", "level": 1, "line_count": 52, "local_path": "comments/remove-comments/I01__apache-kafka__ControllerExceptions__bc1ce280.java", "order": 1, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 678, "comments_removed": 3}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-b50ebc1ce280-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 114, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c3de445c806e-I02", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean is(Throwable exc) {\n        if (exc == null) return false;\n        if (exc instanceof ExecutionException) {\n            exc = exc.getCause();\n            if (exc == null) return false;\n        }\n        return exc instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException new2(OptionalInt controller2) {\n        if (controller2.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException new3(OptionalInt controller3) {\n        if (controller3.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    controller3.getAsInt() + \".\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "1ea74be3de24478f899705a1552452c4fbce3714c408234732a749e2405e3e84", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "shorten-identifiers", "level": 2, "line_count": 52, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__ControllerExceptions__445c806e.java", "order": 2, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 9, "identifiers_declared": 3, "local_name_collisions_avoided": 2, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 2, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-c3de445c806e-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 115, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4832e65eeeb7-I03", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean validateBalance(Throwable nextState) {\n        if (nextState == null) return false;\n        if (nextState instanceof ExecutionException) {\n            nextState = nextState.getCause();\n            if (nextState == null) return false;\n        }\n        return nextState instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException validateMessage(OptionalInt defaultOrder) {\n        if (defaultOrder.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException validateSession(OptionalInt currentBatch) {\n        if (currentBatch.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    currentBatch.getAsInt() + \".\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "543299dd9f311947a58a7412f15c64fc24cd157efc57e3242dd36659ecb96b3b", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "mislead-identifiers", "level": 3, "line_count": 52, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__ControllerExceptions__e65eeeb7.java", "order": 3, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 9, "identifiers_declared": 3, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 3, "local_random_pool_selections": 3, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 1, "method_declarations_renamed": 3, "method_exact_length_matches": 0, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 24}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-4832e65eeeb7-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 116, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c4200fd020ec-I04", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean a(Throwable a) {\n        if (a == null) return false;\n        if (a instanceof ExecutionException) {\n            a = a.getCause();\n            if (a == null) return false;\n        }\n        return a instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException b(OptionalInt b) {\n        if (b.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException c(OptionalInt c) {\n        if (c.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    c.getAsInt() + \".\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "4c018b26fe65f8430696bc0ebd04243a5482793cbd7351c2f490b7f2e81b1074", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "garble-identifiers", "level": 4, "line_count": 52, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__ControllerExceptions__0fd020ec.java", "order": 4, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 9, "identifiers_declared": 3, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-c4200fd020ec-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 117, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ce4d67de98c0-I05", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean isTimeoutException(Throwable exception) {\n        if (exception == null) return false;\n        if (exception instanceof ExecutionException) {\n            exception = exception.getCause();\n            if (exception == null) return false;\n        }\n        return exception instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newPreMigrationException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newWrongControllerException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    controllerId.getAsInt() + \".\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "encode-integer-literals", "level": 5, "line_count": 52, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__ControllerExceptions__67de98c0.java", "order": 5, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-ce4d67de98c0-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 118, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5ec62ab0d2fe-I06", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean isTimeoutException(Throwable exception) {\n        if (!((exception == null))) {} else { return false; }\n        if (!((exception instanceof ExecutionException))) {} else {\n            exception = exception.getCause();\n            if (exception == null) return false;\n        }\n        return exception instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newPreMigrationException(OptionalInt controllerId) {\n        if (!((controllerId.isPresent()))) {\n            return new NotControllerException(\"No controller appears to be active.\");\n        } else {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newWrongControllerException(OptionalInt controllerId) {\n        if (!((controllerId.isPresent()))) {\n            return new NotControllerException(\"No controller appears to be active.\");\n        } else {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    controllerId.getAsInt() + \".\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "01c2137ce9096afb77528e3b04e1aff5a8dcffef751d7db567b6d6a0c71205d2", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "invert-conditions", "level": 6, "line_count": 52, "local_path": "expressions/invert-conditions/I06__apache-kafka__ControllerExceptions__2ab0d2fe.java", "order": 6, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 4}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-5ec62ab0d2fe-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 119, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7608f4db2988-I07", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean isTimeoutException(Throwable exception) {\nif (((0x3D34 ^ 0x3D34) != 0)) { throw new AssertionError(); }\n\n        if (exception == null) return false;\n        if (exception instanceof ExecutionException) {\n            exception = exception.getCause();\n            if (exception == null) return false;\n        }\n        return exception instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newPreMigrationException(OptionalInt controllerId) {\nif (((0x8774 ^ 0x8774) != 0)) { throw new AssertionError(); }\n\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newWrongControllerException(OptionalInt controllerId) {\nif (((0xD538 ^ 0xD538) != 0)) { throw new AssertionError(); }\n\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    controllerId.getAsInt() + \".\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "8317980249c460d6136f90f65721b7f585ce4bf36c942d23c6da7bcb52d9e572", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "insert-dead-branches", "level": 7, "line_count": 58, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__ControllerExceptions__f4db2988.java", "order": 7, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 3}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-7608f4db2988-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 120, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b4beff99b9d5-I08", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean isTimeoutException(Throwable exception) {\n        if (exception == null) return false;\n        if (exception instanceof ExecutionException) {\n            exception = exception.getCause();\n            if (exception == null) return false;\n        }\n        return exception instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newPreMigrationException(OptionalInt controllerId) {\n{\n  int factorial = 1;\n  for (int currentFactor = 2; currentFactor <= 4; currentFactor++) {\n    factorial *= currentFactor;\n  }\n}\n\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newWrongControllerException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    controllerId.getAsInt() + \".\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "9ffc4d7bbdbdf34e7395e4f26e320a259ec25ca4197e0a5bd60c5a9a9194a4ee", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 59, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__ControllerExceptions__ff99b9d5.java", "order": 8, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 6}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-b4beff99b9d5-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 121, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-da724c87a5e4-I09", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean isTimeoutException(Throwable exception) {\n        if (exception == null) return false;\n        if (exception instanceof ExecutionException) {\n            exception = exception.getCause();\n            if (exception == null) return false;\n        }\n        return exception instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newPreMigrationException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newWrongControllerException(OptionalInt controllerId) {\n{boolean lI0O_9689078c=((0xB3FB^0xB3FB)!=0);lI0O_9689078c=!(!lI0O_9689078c);}\n\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    controllerId.getAsInt() + \".\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "a0ca85905b40a6abe97a22868cf3d096e1553098002aeba6d3f58fbed1827460", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 54, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__ControllerExceptions__4c87a5e4.java", "order": 9, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-da724c87a5e4-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 122, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c723cc76c272-I10", "source": "package org.apache.kafka.controller.errors; import org.apache.kafka.common.errors.NotControllerException; import org.apache.kafka.common.errors.TimeoutException; import java.util.OptionalInt; import java.util.concurrent.ExecutionException; public class ControllerExceptions { /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean isTimeoutException(Throwable exception) { if (exception == null) return false; if (exception instanceof ExecutionException) {\n            exception = exception.getCause();\n            if (exception == null) return false;\n        }\n        return exception instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newPreMigrationException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\"); }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */ public static NotControllerException newWrongControllerException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    controllerId.getAsInt() + \".\");\n        } else { return new NotControllerException(\"No controller appears to be active.\");\n        }\n    } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "521f5ef9158b42459d667601a57863967527ba4f622e930de398c847014b055a", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "partially-compact-layout", "level": 10, "line_count": 39, "local_path": "layout/partially-compact-layout/I10__apache-kafka__ControllerExceptions__cc76c272.java", "order": 10, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 32, "line_break_groups_removed": 12, "line_breaks_removed": 13, "whitespace_characters_removed": 45}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-c723cc76c272-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 123, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4ad63e197968-I11", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean isTimeoutException(Throwable exception) {\n        if (exception == null) return false;\n        if (exception instanceof ExecutionException) {\n            exception = exception.getCause();\n            if (exception == null) return false;\n        }\n        return exception instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newPreMigrationException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newWrongControllerException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    controllerId.getAsInt() + \".\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 52, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__ControllerExceptions__3e197968.java", "order": 11, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-4ad63e197968-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 124, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-457500e9e433-I12", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean isTimeoutException(Throwable exception) {\n        if (exception == null) return false;\n        if (exception instanceof ExecutionException) {\n            exception = exception.getCause();\n            if (exception == null) return false;\n        }\n        return exception instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newPreMigrationException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newWrongControllerException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    controllerId.getAsInt() + \".\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 52, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__ControllerExceptions__00e9e433.java", "order": 12, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-457500e9e433-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 125, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-22a4d98982e8-I13", "source": "package org.apache.kafka.controller.errors;\nimport org.apache.kafka.common.errors.NotControllerException;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport java.util.OptionalInt;\nimport java.util.concurrent.ExecutionException;\n\npublic class ControllerExceptions {\n    /**\n     * Check if an exception is a normal timeout exception.\n     *\n     * @param exception     The exception to check.\n     * @return              True if the exception is a timeout exception.\n     */\n    public static boolean isTimeoutException(Throwable exception) {\n        if (exception == null) return false;\n        if (exception instanceof ExecutionException) {\n            exception = exception.getCause();\n            if (exception == null) return false;\n        }\n        return exception instanceof TimeoutException;\n    }\n\n    /**\n     * Create a new exception indicating that the controller is in pre-migration mode, so the\n     * operation cannot be completed.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newPreMigrationException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The controller is in pre-migration mode.\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n\n    /**\n     * Create a new exception indicating that current node is not the controller.\n     *\n     * @param controllerId      The current controller.\n     * @return                  The new NotControllerException.\n     */\n    public static NotControllerException newWrongControllerException(OptionalInt controllerId) {\n        if (controllerId.isPresent()) {\n            return new NotControllerException(\"The active controller appears to be node \" +\n                    controllerId.getAsInt() + \".\");\n        } else {\n            return new NotControllerException(\"No controller appears to be active.\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__ControllerExceptions__b032168b.java", "base_sample_id": "source-dd7f55266689dc7a", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java", "interference": "lower-for-to-while", "level": 13, "line_count": 52, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__ControllerExceptions__d98982e8.java", "order": 13, "original_content_sha256": "53347cc24e859cdf690cca6a48847328cbcd0a2145bdbabd0085e420ce2b457f", "parent_variant_id": "int-66a2b032168b-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "metadata/src/main/java/org/apache/kafka/controller/errors/ControllerExceptions.java#L27-L72", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ControllerExceptions", "variant_id": "int-22a4d98982e8-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 126, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-92680f00eaef-SRC", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> createAuthorizer(String className, Map<String, Object> configs, Metrics metrics, String key, String role) throws ClassNotFoundException {\n        Authorizer authorizer = Utils.newInstance(className, Authorizer.class);\n        authorizer.configure(configs);\n        return Plugin.wrapInstance(authorizer, metrics, key, \"role\", role);\n    }\n\n    public static boolean isClusterResource(String name) {\n        return name.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": null, "level": 0, "line_count": 19, "local_path": "source-original/SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "order": 0, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-92680f00eaef-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 43, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3f5a4f001e4d-I01", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> createAuthorizer(String className, Map<String, Object> configs, Metrics metrics, String key, String role) throws ClassNotFoundException {\n        Authorizer authorizer = Utils.newInstance(className, Authorizer.class);\n        authorizer.configure(configs);\n        return Plugin.wrapInstance(authorizer, metrics, key, \"role\", role);\n    }\n\n    public static boolean isClusterResource(String name) {\n        return name.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "remove-comments", "level": 1, "line_count": 19, "local_path": "comments/remove-comments/I01__apache-kafka__AuthorizerUtils__4f001e4d.java", "order": 1, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 0, "comments_removed": 0}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-3f5a4f001e4d-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 44, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-856a680baa1b-I02", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> create(String class2, Map<String, Object> con, Metrics met, String key, String rol) throws ClassNotFoundException {\n        Authorizer aut = Utils.newInstance(class2, Authorizer.class);\n        aut.configure(con);\n        return Plugin.wrapInstance(aut, met, key, \"role\", rol);\n    }\n\n    public static boolean is(String nam) {\n        return nam.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "98bd00db412964bf8a3a04bf005f3f6416866165147dafe3cb52f342ef5e0e7c", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "shorten-identifiers", "level": 2, "line_count": 19, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__AuthorizerUtils__680baa1b.java", "order": 2, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 7, "local_name_collisions_avoided": 1, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-856a680baa1b-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 45, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0c3a85ad02dc-I03", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> validateMessage(String nextBatch, Map<String, Object> request, Metrics version, String age, String item) throws ClassNotFoundException {\n        Authorizer backupMode = Utils.newInstance(nextBatch, Authorizer.class);\n        backupMode.configure(request);\n        return Plugin.wrapInstance(backupMode, version, age, \"role\", item);\n    }\n\n    public static boolean validateRequest(String mode) {\n        return mode.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "fcae3ebbba00f1cb357f020a235229e49c8b20e1486af3fdbfa0d185f936d97f", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "mislead-identifiers", "level": 3, "line_count": 19, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__AuthorizerUtils__85ad02dc.java", "order": 3, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 7, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 7, "local_random_pool_selections": 7, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 0, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 3}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-0c3a85ad02dc-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 46, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-199090242094-I04", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> a(String a, Map<String, Object> b, Metrics c, String d, String e) throws ClassNotFoundException {\n        Authorizer f = Utils.newInstance(a, Authorizer.class);\n        f.configure(b);\n        return Plugin.wrapInstance(f, c, d, \"role\", e);\n    }\n\n    public static boolean b(String g) {\n        return g.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "95c4147f8b5479e7668c06bf2e21ca3c709e78f34b8d5d3997a39f78634a0866", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "garble-identifiers", "level": 4, "line_count": 19, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__AuthorizerUtils__90242094.java", "order": 4, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 7, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-199090242094-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 47, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-26e43110f7ed-I05", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> createAuthorizer(String className, Map<String, Object> configs, Metrics metrics, String key, String role) throws ClassNotFoundException {\n        Authorizer authorizer = Utils.newInstance(className, Authorizer.class);\n        authorizer.configure(configs);\n        return Plugin.wrapInstance(authorizer, metrics, key, \"role\", role);\n    }\n\n    public static boolean isClusterResource(String name) {\n        return name.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "encode-integer-literals", "level": 5, "line_count": 19, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__AuthorizerUtils__3110f7ed.java", "order": 5, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-26e43110f7ed-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 48, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d81b6d6e64e0-I06", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> createAuthorizer(String className, Map<String, Object> configs, Metrics metrics, String key, String role) throws ClassNotFoundException {\n        Authorizer authorizer = Utils.newInstance(className, Authorizer.class);\n        authorizer.configure(configs);\n        return Plugin.wrapInstance(authorizer, metrics, key, \"role\", role);\n    }\n\n    public static boolean isClusterResource(String name) {\n        return name.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "invert-conditions", "level": 6, "line_count": 19, "local_path": "expressions/invert-conditions/I06__apache-kafka__AuthorizerUtils__6d6e64e0.java", "order": 6, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-d81b6d6e64e0-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 49, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9f8148e8fcb7-I07", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> createAuthorizer(String className, Map<String, Object> configs, Metrics metrics, String key, String role) throws ClassNotFoundException {\nif (((0x4D09 ^ 0x4D09) != 0)) { throw new AssertionError(); }\n\n        Authorizer authorizer = Utils.newInstance(className, Authorizer.class);\n        authorizer.configure(configs);\n        return Plugin.wrapInstance(authorizer, metrics, key, \"role\", role);\n    }\n\n    public static boolean isClusterResource(String name) {\nif (((0x604F ^ 0x604F) != 0)) { throw new AssertionError(); }\n\n        return name.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "3253d94879b12d0b58d2d8baa17689e295e2ac31cb92e61cf92a4b49445d38bb", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "insert-dead-branches", "level": 7, "line_count": 23, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__AuthorizerUtils__48e8fcb7.java", "order": 7, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 2}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-9f8148e8fcb7-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 50, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-af724394859f-I08", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> createAuthorizer(String className, Map<String, Object> configs, Metrics metrics, String key, String role) throws ClassNotFoundException {\n{\n  int totalScore = 240;\n  int numberOfScores = 3;\n  int averageScore = totalScore / numberOfScores;\n}\n\n        Authorizer authorizer = Utils.newInstance(className, Authorizer.class);\n        authorizer.configure(configs);\n        return Plugin.wrapInstance(authorizer, metrics, key, \"role\", role);\n    }\n\n    public static boolean isClusterResource(String name) {\n        return name.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "3ab6ea65f8e0996826dbf4b95362d509d8332eaac3c68ea7d4a2782faa39eaa7", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 25, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__AuthorizerUtils__4394859f.java", "order": 8, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 5, "readable_template_index": 5}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-af724394859f-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 51, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e9574b004ff6-I09", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> createAuthorizer(String className, Map<String, Object> configs, Metrics metrics, String key, String role) throws ClassNotFoundException {\n        Authorizer authorizer = Utils.newInstance(className, Authorizer.class);\n        authorizer.configure(configs);\n        return Plugin.wrapInstance(authorizer, metrics, key, \"role\", role);\n    }\n\n    public static boolean isClusterResource(String name) {\n{boolean lI0O_3caeed3f=((0x8D28^0x8D28)!=0);lI0O_3caeed3f=!(!lI0O_3caeed3f);}\n\n        return name.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "4b8ee46309d01ad7d98daca91be553c3612d459043292cee136445c07800ef15", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 21, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__AuthorizerUtils__4b004ff6.java", "order": 9, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-e9574b004ff6-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 52, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4a3b65dacda0-I10", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin; import org.apache.kafka.common.metrics.Metrics; import org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils; import org.apache.kafka.server.authorizer.Authorizer; import java.util.Map; public class AuthorizerUtils {\n    public static Plugin<Authorizer> createAuthorizer(String className, Map<String, Object> configs, Metrics metrics, String key, String role) throws ClassNotFoundException {\n        Authorizer authorizer = Utils.newInstance(className, Authorizer.class);\n        authorizer.configure(configs); return Plugin.wrapInstance(authorizer, metrics, key, \"role\", role);\n    }\n\n    public static boolean isClusterResource(String name) {\n        return name.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "e26f92fe0fb1717cdedbb19306e0dbdb02a2bfa3b7add05b728ce51c0fd5e620", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "partially-compact-layout", "level": 10, "line_count": 12, "local_path": "layout/partially-compact-layout/I10__apache-kafka__AuthorizerUtils__65dacda0.java", "order": 10, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 16, "line_break_groups_removed": 6, "line_breaks_removed": 7, "whitespace_characters_removed": 9}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-4a3b65dacda0-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 53, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ee0970c78a95-I11", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> createAuthorizer(String className, Map<String, Object> configs, Metrics metrics, String key, String role) throws ClassNotFoundException {\n        Authorizer authorizer = Utils.newInstance(className, Authorizer.class);\n        authorizer.configure(configs);\n        return Plugin.wrapInstance(authorizer, metrics, key, \"role\", role);\n    }\n\n    public static boolean isClusterResource(String name) {\n        return name.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 19, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__AuthorizerUtils__70c78a95.java", "order": 11, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-ee0970c78a95-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 54, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2a2ac0cb43c0-I12", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> createAuthorizer(String className, Map<String, Object> configs, Metrics metrics, String key, String role) throws ClassNotFoundException {\n        Authorizer authorizer = Utils.newInstance(className, Authorizer.class);\n        authorizer.configure(configs);\n        return Plugin.wrapInstance(authorizer, metrics, key, \"role\", role);\n    }\n\n    public static boolean isClusterResource(String name) {\n        return name.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 19, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__AuthorizerUtils__c0cb43c0.java", "order": 12, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-2a2ac0cb43c0-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 55, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6b2f4a6a84f5-I13", "source": "package org.apache.kafka.security.authorizer;\nimport org.apache.kafka.common.internals.Plugin;\nimport org.apache.kafka.common.metrics.Metrics;\nimport org.apache.kafka.common.resource.Resource;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.server.authorizer.Authorizer;\nimport java.util.Map;\n\npublic class AuthorizerUtils {\n    public static Plugin<Authorizer> createAuthorizer(String className, Map<String, Object> configs, Metrics metrics, String key, String role) throws ClassNotFoundException {\n        Authorizer authorizer = Utils.newInstance(className, Authorizer.class);\n        authorizer.configure(configs);\n        return Plugin.wrapInstance(authorizer, metrics, key, \"role\", role);\n    }\n\n    public static boolean isClusterResource(String name) {\n        return name.equals(Resource.CLUSTER_NAME);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__AuthorizerUtils__0f00eaef.java", "base_sample_id": "source-19ccca676de420ee", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java", "interference": "lower-for-to-while", "level": 13, "line_count": 19, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__AuthorizerUtils__4a6a84f5.java", "order": 13, "original_content_sha256": "5cc4684204cf723e150bb21091ede9592bf0018ae5e728fefd102c9709f6c98e", "parent_variant_id": "int-92680f00eaef-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/security/authorizer/AuthorizerUtils.java#L27-L37", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "AuthorizerUtils", "variant_id": "int-6b2f4a6a84f5-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 56, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e8da962da5b1-SRC", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n/**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long timeoutMs, List<CompletableFuture<T>> futures, Runnable responseCallback) {\n        super(timeoutMs);\n        this.timeoutMs = timeoutMs;\n        this.futures = futures;\n        this.responseCallback = responseCallback;\n    }\n\n    /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean tryComplete() {\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long pending = futures.stream().filter(future -> !future.isDone()).count();\n        if (pending == 0) {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", pending);\n            return false;\n        }\n    }\n\n    /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void onComplete() {\n        List<CompletableFuture<T>> pendingFutures = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), pendingFutures.size());\n        pendingFutures.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override\n    public void onExpiration() {\n        // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": null, "level": 0, "line_count": 63, "local_path": "source-original/SRC__apache-kafka__DelayedFuture__962da5b1.java", "order": 0, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-e8da962da5b1-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 169, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-903e99c5c00f-I01", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n\n\n\n\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long timeoutMs, List<CompletableFuture<T>> futures, Runnable responseCallback) {\n        super(timeoutMs);\n        this.timeoutMs = timeoutMs;\n        this.futures = futures;\n        this.responseCallback = responseCallback;\n    }\n\n    \n\n\n\n    @Override\n    public boolean tryComplete() {\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long pending = futures.stream().filter(future -> !future.isDone()).count();\n        if (pending == 0) {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", pending);\n            return false;\n        }\n    }\n\n    \n\n\n\n    @Override\n    public void onComplete() {\n        List<CompletableFuture<T>> pendingFutures = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), pendingFutures.size());\n        pendingFutures.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    \n\n\n    @Override\n    public void onExpiration() {\n         \n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "1355c0997ee6c4c75fbf0ad33c22ed62f98c2d438d6502b76af06c14d67b370c", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "remove-comments", "level": 1, "line_count": 63, "local_path": "comments/remove-comments/I01__apache-kafka__DelayedFuture__99c5c00f.java", "order": 1, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 615, "comments_removed": 5}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-903e99c5c00f-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 170, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-aa8fc79f88b8-I02", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n/**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long timeout, List<CompletableFuture<T>> fut, Runnable response) {\n        super(timeout);\n        this.timeoutMs = timeout;\n        this.futures = fut;\n        this.responseCallback = response;\n    }\n\n    /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean try2() {\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long pen = futures.stream().filter(future -> !future.isDone()).count();\n        if (pen == 0) {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", pen);\n            return false;\n        }\n    }\n\n    /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void on() {\n        List<CompletableFuture<T>> pending = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), pending.size());\n        pending.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override\n    public void on2() {\n        // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "650738ba1e9c361fd02b2dfd47d2882c452d48e7986e94902bbbe40d02b6c8b5", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "shorten-identifiers", "level": 2, "line_count": 63, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__DelayedFuture__c79f88b8.java", "order": 2, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 2, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-aa8fc79f88b8-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 171, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3d876f6087b2-I03", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n/**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long localUser, List<CompletableFuture<T>> channel, Runnable currentMessage) {\n        super(localUser);\n        this.timeoutMs = localUser;\n        this.futures = channel;\n        this.responseCallback = currentMessage;\n    }\n\n    /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean removeEvent() {\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long version = futures.stream().filter(future -> !future.isDone()).count();\n        if (version == 0) {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", version);\n            return false;\n        }\n    }\n\n    /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void saveResult() {\n        List<CompletableFuture<T>> defaultSession = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), defaultSession.size());\n        defaultSession.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override\n    public void createBuffer() {\n        // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a6d2a0bd984476c73b81bafdf20dbe5bc91c84278aa6ac55f9746b44deb567a5", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "mislead-identifiers", "level": 3, "line_count": 63, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__DelayedFuture__6f6087b2.java", "order": 3, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 4, "local_random_pool_selections": 5, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 3, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-3d876f6087b2-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 172, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2ee36bf42744-I04", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n/**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long a, List<CompletableFuture<T>> b, Runnable c) {\n        super(a);\n        this.timeoutMs = a;\n        this.futures = b;\n        this.responseCallback = c;\n    }\n\n    /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean a() {\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long d = futures.stream().filter(future -> !future.isDone()).count();\n        if (d == 0) {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", d);\n            return false;\n        }\n    }\n\n    /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void b() {\n        List<CompletableFuture<T>> e = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), e.size());\n        e.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override\n    public void c() {\n        // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b024b7db8a433b35d67f8f51d4f08cdfec750247ccd474bba26811eed92ce63c", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "garble-identifiers", "level": 4, "line_count": 63, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__DelayedFuture__6bf42744.java", "order": 4, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-2ee36bf42744-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 173, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4cdb4d76f4b4-I05", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n/**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long timeoutMs, List<CompletableFuture<T>> futures, Runnable responseCallback) {\n        super(timeoutMs);\n        this.timeoutMs = timeoutMs;\n        this.futures = futures;\n        this.responseCallback = responseCallback;\n    }\n\n    /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean tryComplete() {\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long pending = futures.stream().filter(future -> !future.isDone()).count();\n        if (pending == 0x0) {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", pending);\n            return false;\n        }\n    }\n\n    /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void onComplete() {\n        List<CompletableFuture<T>> pendingFutures = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), pendingFutures.size());\n        pendingFutures.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override\n    public void onExpiration() {\n        // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "617997c0061bf3d3ee247815dc6061d71b8b3003c1c81bf7271748e31a644229", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "encode-integer-literals", "level": 5, "line_count": 63, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__DelayedFuture__4d76f4b4.java", "order": 5, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-4cdb4d76f4b4-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 174, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1db5f1d2fbdb-I06", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n/**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long timeoutMs, List<CompletableFuture<T>> futures, Runnable responseCallback) {\n        super(timeoutMs);\n        this.timeoutMs = timeoutMs;\n        this.futures = futures;\n        this.responseCallback = responseCallback;\n    }\n\n    /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean tryComplete() {\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long pending = futures.stream().filter(future -> !future.isDone()).count();\n        if (!((pending == 0))) {\n            log.trace(\"{} future still pending, not completing the delayed operation\", pending);\n            return false;\n        } else {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        }\n    }\n\n    /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void onComplete() {\n        List<CompletableFuture<T>> pendingFutures = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), pendingFutures.size());\n        pendingFutures.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override\n    public void onExpiration() {\n        // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "a3248511e2832adc67d2303ffa6dc3b2a623b8dd46f781b362fd1377ebb4c7f1", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "invert-conditions", "level": 6, "line_count": 63, "local_path": "expressions/invert-conditions/I06__apache-kafka__DelayedFuture__f1d2fbdb.java", "order": 6, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-1db5f1d2fbdb-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 175, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-318d39398d68-I07", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n/**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long timeoutMs, List<CompletableFuture<T>> futures, Runnable responseCallback) {\n        super(timeoutMs);\nif (((0x77F7 ^ 0x77F7) != 0)) { throw new AssertionError(); }\n\n        this.timeoutMs = timeoutMs;\n        this.futures = futures;\n        this.responseCallback = responseCallback;\n    }\n\n    /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean tryComplete() {\nif (((0xBD9F ^ 0xBD9F) != 0)) { throw new AssertionError(); }\n\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long pending = futures.stream().filter(future -> !future.isDone()).count();\n        if (pending == 0) {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", pending);\n            return false;\n        }\n    }\n\n    /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void onComplete() {\nif (((0xEC8D ^ 0xEC8D) != 0)) { throw new AssertionError(); }\n\n        List<CompletableFuture<T>> pendingFutures = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), pendingFutures.size());\n        pendingFutures.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override\n    public void onExpiration() {\nif (((0x7EB9 ^ 0x7EB9) != 0)) { throw new AssertionError(); }\n\n        // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5cd7ae632ce222332c2ea28866e9b4cf099fae419d276b6819d6e7d5e8cfc9f6", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "insert-dead-branches", "level": 7, "line_count": 71, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__DelayedFuture__39398d68.java", "order": 7, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-318d39398d68-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 176, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-369b82e1ef98-I08", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n/**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long timeoutMs, List<CompletableFuture<T>> futures, Runnable responseCallback) {\n        super(timeoutMs);\n        this.timeoutMs = timeoutMs;\n        this.futures = futures;\n        this.responseCallback = responseCallback;\n    }\n\n    /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean tryComplete() {\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long pending = futures.stream().filter(future -> !future.isDone()).count();\n        if (pending == 0) {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", pending);\n            return false;\n        }\n    }\n\n    /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void onComplete() {\n{\n  int totalScore = 240;\n  int numberOfScores = 3;\n  int averageScore = totalScore / numberOfScores;\n}\n\n        List<CompletableFuture<T>> pendingFutures = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), pendingFutures.size());\n        pendingFutures.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override\n    public void onExpiration() {\n        // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "a4a45e8dc4aa4f6ce8010c42022b569a020f24cb8e240bfe87812fb1fcf1dd25", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 69, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__DelayedFuture__82e1ef98.java", "order": 8, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 5, "readable_template_index": 5}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-369b82e1ef98-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 177, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-41a7f9d91275-I09", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n/**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long timeoutMs, List<CompletableFuture<T>> futures, Runnable responseCallback) {\n        super(timeoutMs);\n        this.timeoutMs = timeoutMs;\n        this.futures = futures;\n        this.responseCallback = responseCallback;\n    }\n\n    /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean tryComplete() {\n{int lI0O_9143e2e5=0xC79C;lI0O_9143e2e5=((lI0O_9143e2e5^0xC79C)|0)&-1;if(((lI0O_9143e2e5&1)==1)){lI0O_9143e2e5^=lI0O_9143e2e5;}}\n\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long pending = futures.stream().filter(future -> !future.isDone()).count();\n        if (pending == 0) {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", pending);\n            return false;\n        }\n    }\n\n    /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void onComplete() {\n        List<CompletableFuture<T>> pendingFutures = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), pendingFutures.size());\n        pendingFutures.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override\n    public void onExpiration() {\n        // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "7173086ec1a3e8433b5bb712bce6a865fd886466e6bc5fbdcd8a2bc2bb692c4a", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 65, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__DelayedFuture__f9d91275.java", "order": 9, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-41a7f9d91275-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 178, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f01fe6914fb8-I10", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List; import java.util.concurrent.CompletableFuture; /**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long timeoutMs, List<CompletableFuture<T>> futures, Runnable responseCallback) { super(timeoutMs);\n        this.timeoutMs = timeoutMs; this.futures = futures; this.responseCallback = responseCallback; } /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean tryComplete() { log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long pending = futures.stream().filter(future -> !future.isDone()).count(); if (pending == 0) { log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", pending);\n            return false;\n        } } /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void onComplete() {\n        List<CompletableFuture<T>> pendingFutures = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), pendingFutures.size()); pendingFutures.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run(); } /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override public void onExpiration() { // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "2bf993e2fddf7c19202a2444d2f14e868091705a8a6f660fe895a63ca24fb99b", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "partially-compact-layout", "level": 10, "line_count": 42, "local_path": "layout/partially-compact-layout/I10__apache-kafka__DelayedFuture__e6914fb8.java", "order": 10, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 43, "line_break_groups_removed": 17, "line_breaks_removed": 21, "whitespace_characters_removed": 100}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-f01fe6914fb8-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 179, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c39f8c139e10-I11", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n/**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long timeoutMs, List<CompletableFuture<T>> futures, Runnable responseCallback) {\n        super(timeoutMs);\n        this.timeoutMs = timeoutMs;\n        this.futures = futures;\n        this.responseCallback = responseCallback;\n    }\n\n    /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean tryComplete() {\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long pending = futures.stream().filter(future -> !future.isDone()).count();\n        final int a = 1;\n        final int b = -1;\n        if (pending == (a + b)) {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", pending);\n            return false;\n        }\n    }\n\n    /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void onComplete() {\n        List<CompletableFuture<T>> pendingFutures = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), pendingFutures.size());\n        pendingFutures.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override\n    public void onExpiration() {\n        // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5b73010d737150ee9d2c33fdb107f406a30be451036b2244b922a070434fb1c0", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 65, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__DelayedFuture__8c139e10.java", "order": 11, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 1, "intermediate_variables_introduced": 2, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-c39f8c139e10-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 180, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4f6e089d96ee-I12", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n/**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long timeoutMs, List<CompletableFuture<T>> futures, Runnable responseCallback) {\n        super(timeoutMs);\n        this.timeoutMs = timeoutMs;\n        this.futures = futures;\n        this.responseCallback = responseCallback;\n    }\n\n    /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean tryComplete() {\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long pending = futures.stream().filter(future -> !future.isDone()).count();\n        if (pending == 0) {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", pending);\n            return false;\n        }\n    }\n\n    /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void onComplete() {\n        List<CompletableFuture<T>> pendingFutures = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), pendingFutures.size());\n        pendingFutures.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override\n    public void onExpiration() {\n        // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 63, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__DelayedFuture__089d96ee.java", "order": 12, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-4f6e089d96ee-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 181, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a20253334104-I13", "source": "package org.apache.kafka.server.purgatory;\nimport org.apache.kafka.common.errors.TimeoutException;\nimport org.apache.kafka.common.utils.internals.LogContext;\nimport org.slf4j.Logger;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\n/**\n * A delayed operation using CompletionFutures that can be created by KafkaApis and watched\n * in a DelayedFuturePurgatory purgatory. This is used for ACL updates using async Authorizers.\n */\npublic class DelayedFuture<T> extends DelayedOperation {\n\n    private final Logger log = new LogContext().logger(DelayedFuture.class.getName());\n    private final List<CompletableFuture<T>> futures;\n    private final Runnable responseCallback;\n    private final long timeoutMs;\n\n    public DelayedFuture(long timeoutMs, List<CompletableFuture<T>> futures, Runnable responseCallback) {\n        super(timeoutMs);\n        this.timeoutMs = timeoutMs;\n        this.futures = futures;\n        this.responseCallback = responseCallback;\n    }\n\n    /**\n     * The operation can be completed if all the futures have completed successfully\n     * or failed with exceptions.\n     */\n    @Override\n    public boolean tryComplete() {\n        log.trace(\"Trying to complete operation for {} futures\", futures.size());\n\n        long pending = futures.stream().filter(future -> !future.isDone()).count();\n        if (pending == 0) {\n            log.trace(\"All futures have been completed or have errors, completing the delayed operation\");\n            return forceComplete();\n        } else {\n            log.trace(\"{} future still pending, not completing the delayed operation\", pending);\n            return false;\n        }\n    }\n\n    /**\n     * Timeout any pending futures and invoke responseCallback. This is invoked when all\n     * futures have completed or the operation has timed out.\n     */\n    @Override\n    public void onComplete() {\n        List<CompletableFuture<T>> pendingFutures = futures.stream().filter(future -> !future.isDone()).toList();\n        log.trace(\"Completing operation for {} futures, expired {}\", futures.size(), pendingFutures.size());\n        pendingFutures.forEach(future -> future.completeExceptionally(new TimeoutException(\"Request has been timed out after \" + timeoutMs + \" ms\")));\n        responseCallback.run();\n    }\n\n    /**\n     * This is invoked after onComplete(), so no actions required.\n     */\n    @Override\n    public void onExpiration() {\n        // This is invoked after onComplete(), so no actions required.\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__DelayedFuture__962da5b1.java", "base_sample_id": "source-bd2d6de69f5eb241", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java", "interference": "lower-for-to-while", "level": 13, "line_count": 63, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__DelayedFuture__53334104.java", "order": 13, "original_content_sha256": "e317624e59a3baba5ce3836aa7808070eec090700cfc50479a149c810bb08edd", "parent_variant_id": "int-e8da962da5b1-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "server/src/main/java/org/apache/kafka/server/purgatory/DelayedFuture.java#L28-L83", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "DelayedFuture", "variant_id": "int-a20253334104-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 182, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cff01a377579-SRC", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n    // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry snapshotRegistry) {\n        Objects.requireNonNull(snapshotRegistry);\n        offsets = new TimelineHashMap<>(snapshotRegistry, 0);\n        lastRedundantOffset = new TimelineLong(snapshotRegistry);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */\n    public void updateState(SharePartitionKey key, long offset, boolean isDelete) {\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), offset));\n        offsets.put(key, offset);\n\n        Optional<Long> redundantOffset = findRedundantOffset();\n        redundantOffset.ifPresent(lastRedundantOffset::set);\n\n        // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (isDelete) {\n            offsets.remove(key);\n        }\n    }\n\n    private Optional<Long> findRedundantOffset() {\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long soFar = Long.MAX_VALUE;\n\n        for (long offset : offsets.values()) {\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            soFar = Math.min(soFar, offset);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (soFar == lastRedundantOffset.get()) {\n                return Optional.of(soFar);\n            }\n        }\n\n        return Optional.of(soFar);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> lastRedundantOffset() {\n        long value = lastRedundantOffset.get();\n        if (value <= 0 || value == Long.MAX_VALUE) {\n            return Optional.empty();\n        }\n\n        return Optional.of(value);\n    }\n\n    // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> curState() {\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": null, "level": 0, "line_count": 110, "local_path": "source-original/SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "order": 0, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-cff01a377579-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 281, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-337c1f71e02e-I01", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n\n\n\n\n\n\n\npublic class ShareCoordinatorOffsetsManager {\n\n     \n     \n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n     \n     \n     \n     \n     \n     \n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry snapshotRegistry) {\n        Objects.requireNonNull(snapshotRegistry);\n        offsets = new TimelineHashMap<>(snapshotRegistry, 0);\n        lastRedundantOffset = new TimelineLong(snapshotRegistry);\n        lastRedundantOffset.set(Long.MAX_VALUE);   \n    }\n\n    \n\n\n\n\n\n\n\n\n    public void updateState(SharePartitionKey key, long offset, boolean isDelete) {\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), offset));\n        offsets.put(key, offset);\n\n        Optional<Long> redundantOffset = findRedundantOffset();\n        redundantOffset.ifPresent(lastRedundantOffset::set);\n\n         \n         \n        if (isDelete) {\n            offsets.remove(key);\n        }\n    }\n\n    private Optional<Long> findRedundantOffset() {\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long soFar = Long.MAX_VALUE;\n\n        for (long offset : offsets.values()) {\n             \n             \n            soFar = Math.min(soFar, offset);\n\n             \n             \n             \n             \n             \n             \n             \n             \n             \n             \n             \n             \n            if (soFar == lastRedundantOffset.get()) {\n                return Optional.of(soFar);\n            }\n        }\n\n        return Optional.of(soFar);\n    }\n\n    \n\n\n\n\n    public Optional<Long> lastRedundantOffset() {\n        long value = lastRedundantOffset.get();\n        if (value <= 0 || value == Long.MAX_VALUE) {\n            return Optional.empty();\n        }\n\n        return Optional.of(value);\n    }\n\n     \n    TimelineHashMap<SharePartitionKey, Long> curState() {\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "7d25d442369aa4ec0badb148db31b2c971248cc646c53a37bdacf8262a0dc22f", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "remove-comments", "level": 1, "line_count": 110, "local_path": "comments/remove-comments/I01__apache-kafka__ShareCoordinatorOffsetsManager__1f71e02e.java", "order": 1, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 2168, "comments_removed": 29}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-337c1f71e02e-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 282, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d9d4cbdab0a1-I02", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n    // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry snapshot) {\n        Objects.requireNonNull(snapshot);\n        offsets = new TimelineHashMap<>(snapshot, 0);\n        lastRedundantOffset = new TimelineLong(snapshot);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */\n    public void update(SharePartitionKey key, long off, boolean is) {\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), off));\n        offsets.put(key, off);\n\n        Optional<Long> redundant = find();\n        redundant.ifPresent(lastRedundantOffset::set);\n\n        // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (is) {\n            offsets.remove(key);\n        }\n    }\n\n    private Optional<Long> find() {\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long so = Long.MAX_VALUE;\n\n        for (long off2 : offsets.values()) {\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            so = Math.min(so, off2);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (so == lastRedundantOffset.get()) {\n                return Optional.of(so);\n            }\n        }\n\n        return Optional.of(so);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> last() {\n        long val = lastRedundantOffset.get();\n        if (val <= 0 || val == Long.MAX_VALUE) {\n            return Optional.empty();\n        }\n\n        return Optional.of(val);\n    }\n\n    // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> cur() {\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a42504e9caa17aaaeb6ca094c5d0663578c51b80ef6029394121b0f70dec1440", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "shorten-identifiers", "level": 2, "line_count": 110, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__ShareCoordinatorOffsetsManager__cbdab0a1.java", "order": 2, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 18, "identifiers_declared": 8, "local_name_collisions_avoided": 1, "method_calls_renamed": 1, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-d9d4cbdab0a1-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 283, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7957e45a9990-I03", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n    // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry defaultAccount) {\n        Objects.requireNonNull(defaultAccount);\n        offsets = new TimelineHashMap<>(defaultAccount, 0);\n        lastRedundantOffset = new TimelineLong(defaultAccount);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */\n    public void createCount(SharePartitionKey map, long source, boolean location) {\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), source));\n        offsets.put(map, source);\n\n        Optional<Long> primarySession = validateRequest();\n        primarySession.ifPresent(lastRedundantOffset::set);\n\n        // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (location) {\n            offsets.remove(map);\n        }\n    }\n\n    private Optional<Long> validateRequest() {\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long entry = Long.MAX_VALUE;\n\n        for (long window : offsets.values()) {\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            entry = Math.min(entry, window);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (entry == lastRedundantOffset.get()) {\n                return Optional.of(entry);\n            }\n        }\n\n        return Optional.of(entry);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> validateBalance() {\n        long token = lastRedundantOffset.get();\n        if (token <= 0 || token == Long.MAX_VALUE) {\n            return Optional.empty();\n        }\n\n        return Optional.of(token);\n    }\n\n    // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> saveData() {\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "8b4492ccb8f8e223f16e6b9fa7748210bb72132d4f803519a9a4d1babee15f28", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "mislead-identifiers", "level": 3, "line_count": 110, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__ShareCoordinatorOffsetsManager__e45a9990.java", "order": 3, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 18, "identifiers_declared": 8, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 1, "local_exact_length_matches": 6, "local_random_pool_selections": 8, "local_total_length_difference": 3, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 1, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 2, "method_name_groups": 4, "method_random_pool_selections": 4, "method_total_length_difference": 8}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-7957e45a9990-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 284, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c59ece3c0573-I04", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n    // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry a) {\n        Objects.requireNonNull(a);\n        offsets = new TimelineHashMap<>(a, 0);\n        lastRedundantOffset = new TimelineLong(a);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */\n    public void a(SharePartitionKey b, long c, boolean d) {\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), c));\n        offsets.put(b, c);\n\n        Optional<Long> e = b();\n        e.ifPresent(lastRedundantOffset::set);\n\n        // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (d) {\n            offsets.remove(b);\n        }\n    }\n\n    private Optional<Long> b() {\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long f = Long.MAX_VALUE;\n\n        for (long g : offsets.values()) {\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            f = Math.min(f, g);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (f == lastRedundantOffset.get()) {\n                return Optional.of(f);\n            }\n        }\n\n        return Optional.of(f);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> c() {\n        long h = lastRedundantOffset.get();\n        if (h <= 0 || h == Long.MAX_VALUE) {\n            return Optional.empty();\n        }\n\n        return Optional.of(h);\n    }\n\n    // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> d() {\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "3206a4eafbf46ef1df210ce93b91f456d63f9b8aa8e98842614f8db3bd4d6a3b", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "garble-identifiers", "level": 4, "line_count": 110, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__ShareCoordinatorOffsetsManager__ce3c0573.java", "order": 4, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 18, "identifiers_declared": 8, "local_name_collisions_avoided": 0, "method_calls_renamed": 1, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-c59ece3c0573-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 285, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-24b26ffdade5-I05", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n    // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry snapshotRegistry) {\n        Objects.requireNonNull(snapshotRegistry);\n        offsets = new TimelineHashMap<>(snapshotRegistry, 0x0);\n        lastRedundantOffset = new TimelineLong(snapshotRegistry);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */\n    public void updateState(SharePartitionKey key, long offset, boolean isDelete) {\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), offset));\n        offsets.put(key, offset);\n\n        Optional<Long> redundantOffset = findRedundantOffset();\n        redundantOffset.ifPresent(lastRedundantOffset::set);\n\n        // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (isDelete) {\n            offsets.remove(key);\n        }\n    }\n\n    private Optional<Long> findRedundantOffset() {\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long soFar = Long.MAX_VALUE;\n\n        for (long offset : offsets.values()) {\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            soFar = Math.min(soFar, offset);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (soFar == lastRedundantOffset.get()) {\n                return Optional.of(soFar);\n            }\n        }\n\n        return Optional.of(soFar);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> lastRedundantOffset() {\n        long value = lastRedundantOffset.get();\n        if (value <= 0x0 || value == Long.MAX_VALUE) {\n            return Optional.empty();\n        }\n\n        return Optional.of(value);\n    }\n\n    // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> curState() {\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "020c1c64c90c21b31d816f8245f288b148ef435a5eb28b9fcd7968b40002ba00", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "encode-integer-literals", "level": 5, "line_count": 110, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__ShareCoordinatorOffsetsManager__6ffdade5.java", "order": 5, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 2}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-24b26ffdade5-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 286, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bb0032bfcb30-I06", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n    // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry snapshotRegistry) {\n        Objects.requireNonNull(snapshotRegistry);\n        offsets = new TimelineHashMap<>(snapshotRegistry, 0);\n        lastRedundantOffset = new TimelineLong(snapshotRegistry);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */\n    public void updateState(SharePartitionKey key, long offset, boolean isDelete) {\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), offset));\n        offsets.put(key, offset);\n\n        Optional<Long> redundantOffset = findRedundantOffset();\n        redundantOffset.ifPresent(lastRedundantOffset::set);\n\n        // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (!((isDelete))) {} else {\n            offsets.remove(key);\n        }\n    }\n\n    private Optional<Long> findRedundantOffset() {\n        if (!((offsets.isEmpty()))) {} else {\n            return Optional.empty();\n        }\n\n        long soFar = Long.MAX_VALUE;\n\n        for (long offset : offsets.values()) {\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            soFar = Math.min(soFar, offset);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (!((soFar == lastRedundantOffset.get()))) {} else {\n                return Optional.of(soFar);\n            }\n        }\n\n        return Optional.of(soFar);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> lastRedundantOffset() {\n        long value = lastRedundantOffset.get();\n        if (!((value <= 0 || value == Long.MAX_VALUE))) {} else {\n            return Optional.empty();\n        }\n\n        return Optional.of(value);\n    }\n\n    // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> curState() {\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "a056b8fabf25fe9f98d159a89c216008caf4ee42c84bc4181abf8dd60f2ee364", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "invert-conditions", "level": 6, "line_count": 110, "local_path": "expressions/invert-conditions/I06__apache-kafka__ShareCoordinatorOffsetsManager__32bfcb30.java", "order": 6, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 4}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-bb0032bfcb30-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 287, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-863f300a6777-I07", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n    // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry snapshotRegistry) {\nif (((0x366F ^ 0x366F) != 0)) { throw new AssertionError(); }\n\n        Objects.requireNonNull(snapshotRegistry);\n        offsets = new TimelineHashMap<>(snapshotRegistry, 0);\n        lastRedundantOffset = new TimelineLong(snapshotRegistry);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */\n    public void updateState(SharePartitionKey key, long offset, boolean isDelete) {\nif (((0xD55D ^ 0xD55D) != 0)) { throw new AssertionError(); }\n\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), offset));\n        offsets.put(key, offset);\n\n        Optional<Long> redundantOffset = findRedundantOffset();\n        redundantOffset.ifPresent(lastRedundantOffset::set);\n\n        // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (isDelete) {\n            offsets.remove(key);\n        }\n    }\n\n    private Optional<Long> findRedundantOffset() {\nif (((0x8D7F ^ 0x8D7F) != 0)) { throw new AssertionError(); }\n\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long soFar = Long.MAX_VALUE;\n\n        for (long offset : offsets.values()) {\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            soFar = Math.min(soFar, offset);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (soFar == lastRedundantOffset.get()) {\n                return Optional.of(soFar);\n            }\n        }\n\n        return Optional.of(soFar);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> lastRedundantOffset() {\nif (((0xB0E7 ^ 0xB0E7) != 0)) { throw new AssertionError(); }\n\n        long value = lastRedundantOffset.get();\n        if (value <= 0 || value == Long.MAX_VALUE) {\n            return Optional.empty();\n        }\n\n        return Optional.of(value);\n    }\n\n    // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> curState() {\nif (((0x9D50 ^ 0x9D50) != 0)) { throw new AssertionError(); }\n\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "0e50ce3944ed43b65172ca00464e09f78be7c83c0a774f6a4fcbbb21ec26b0bf", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "insert-dead-branches", "level": 7, "line_count": 120, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__ShareCoordinatorOffsetsManager__300a6777.java", "order": 7, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 5}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-863f300a6777-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 288, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-08d7d555897b-I08", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n    // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry snapshotRegistry) {\n        Objects.requireNonNull(snapshotRegistry);\n        offsets = new TimelineHashMap<>(snapshotRegistry, 0);\n        lastRedundantOffset = new TimelineLong(snapshotRegistry);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */\n    public void updateState(SharePartitionKey key, long offset, boolean isDelete) {\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), offset));\n        offsets.put(key, offset);\n\n        Optional<Long> redundantOffset = findRedundantOffset();\n        redundantOffset.ifPresent(lastRedundantOffset::set);\n\n        // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (isDelete) {\n            offsets.remove(key);\n        }\n    }\n\n    private Optional<Long> findRedundantOffset() {\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long soFar = Long.MAX_VALUE;\n\n        for (long offset : offsets.values()) {\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            soFar = Math.min(soFar, offset);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (soFar == lastRedundantOffset.get()) {\n                return Optional.of(soFar);\n            }\n        }\n\n        return Optional.of(soFar);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> lastRedundantOffset() {\n{\n  int runningTotal = 0;\n  for (int currentNumber = 1; currentNumber <= 5; currentNumber++) {\n    runningTotal += currentNumber;\n  }\n}\n\n        long value = lastRedundantOffset.get();\n        if (value <= 0 || value == Long.MAX_VALUE) {\n            return Optional.empty();\n        }\n\n        return Optional.of(value);\n    }\n\n    // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> curState() {\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "a3cf436008399042b08b930079976b14bb585e4fa18a55b8ebc7689a4abc788e", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 117, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__ShareCoordinatorOffsetsManager__d555897b.java", "order": 8, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 0}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-08d7d555897b-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 289, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ef65ea7d3d0f-I09", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n    // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry snapshotRegistry) {\n        Objects.requireNonNull(snapshotRegistry);\n        offsets = new TimelineHashMap<>(snapshotRegistry, 0);\n        lastRedundantOffset = new TimelineLong(snapshotRegistry);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */\n    public void updateState(SharePartitionKey key, long offset, boolean isDelete) {\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), offset));\n        offsets.put(key, offset);\n\n        Optional<Long> redundantOffset = findRedundantOffset();\n        redundantOffset.ifPresent(lastRedundantOffset::set);\n\n        // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (isDelete) {\n            offsets.remove(key);\n        }\n    }\n\n    private Optional<Long> findRedundantOffset() {\n{int lI0O_79125324=0,lI0O_47e00490=0;while(lI0O_47e00490<2){lI0O_79125324^=(lI0O_47e00490<<1)^0xA;lI0O_47e00490++;}lI0O_79125324^=lI0O_79125324;}\n\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long soFar = Long.MAX_VALUE;\n\n        for (long offset : offsets.values()) {\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            soFar = Math.min(soFar, offset);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (soFar == lastRedundantOffset.get()) {\n                return Optional.of(soFar);\n            }\n        }\n\n        return Optional.of(soFar);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> lastRedundantOffset() {\n        long value = lastRedundantOffset.get();\n        if (value <= 0 || value == Long.MAX_VALUE) {\n            return Optional.empty();\n        }\n\n        return Optional.of(value);\n    }\n\n    // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> curState() {\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "6565bbe63f583d9400e6d9c1b67a515d172659976c76852c3367d86376d96203", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 112, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__ShareCoordinatorOffsetsManager__ea7d3d0f.java", "order": 9, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 2}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-ef65ea7d3d0f-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 290, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-653a8390b4b6-I10", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey; import org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional; /**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets; // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry snapshotRegistry) { Objects.requireNonNull(snapshotRegistry); offsets = new TimelineHashMap<>(snapshotRegistry, 0);\n        lastRedundantOffset = new TimelineLong(snapshotRegistry);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */ public void updateState(SharePartitionKey key, long offset, boolean isDelete) { lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), offset));\n        offsets.put(key, offset);\n\n        Optional<Long> redundantOffset = findRedundantOffset();\n        redundantOffset.ifPresent(lastRedundantOffset::set); // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (isDelete) { offsets.remove(key); } }\n\n    private Optional<Long> findRedundantOffset() {\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long soFar = Long.MAX_VALUE;\n\n        for (long offset : offsets.values()) {\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            soFar = Math.min(soFar, offset);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (soFar == lastRedundantOffset.get()) {\n                return Optional.of(soFar); }\n        } return Optional.of(soFar);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> lastRedundantOffset() { long value = lastRedundantOffset.get(); if (value <= 0 || value == Long.MAX_VALUE) { return Optional.empty(); } return Optional.of(value);\n    } // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> curState() {\n        return offsets; }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "e5ab26a439d4b5017ffbf12f46f279fe2446517ff30d306a474eb0396516817d", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "partially-compact-layout", "level": 10, "line_count": 84, "local_path": "layout/partially-compact-layout/I10__apache-kafka__ShareCoordinatorOffsetsManager__8390b4b6.java", "order": 10, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 50, "line_break_groups_removed": 20, "line_breaks_removed": 26, "whitespace_characters_removed": 142}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-653a8390b4b6-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 291, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-db087f0ac5a2-I11", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n    // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry snapshotRegistry) {\n        Objects.requireNonNull(snapshotRegistry);\n        final int a = 1;\n        final int b = -1;\n        offsets = new TimelineHashMap<>(snapshotRegistry, (a + b));\n        lastRedundantOffset = new TimelineLong(snapshotRegistry);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */\n    public void updateState(SharePartitionKey key, long offset, boolean isDelete) {\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), offset));\n        offsets.put(key, offset);\n\n        Optional<Long> redundantOffset = findRedundantOffset();\n        redundantOffset.ifPresent(lastRedundantOffset::set);\n\n        // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (isDelete) {\n            offsets.remove(key);\n        }\n    }\n\n    private Optional<Long> findRedundantOffset() {\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long soFar = Long.MAX_VALUE;\n\n        for (long offset : offsets.values()) {\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            soFar = Math.min(soFar, offset);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (soFar == lastRedundantOffset.get()) {\n                return Optional.of(soFar);\n            }\n        }\n\n        return Optional.of(soFar);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> lastRedundantOffset() {\n        long value = lastRedundantOffset.get();\n        final int c = 1;\n        final int d = -1;\n        if (value <= (c + d) || value == Long.MAX_VALUE) {\n            return Optional.empty();\n        }\n\n        return Optional.of(value);\n    }\n\n    // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> curState() {\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5724ec28c850a536e27b5636747a3fa0cccbb1dda935ccce685d9ec4d9a18185", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 114, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__ShareCoordinatorOffsetsManager__7f0ac5a2.java", "order": 11, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 2, "intermediate_variables_introduced": 4, "statements_augmented": 2}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-db087f0ac5a2-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 292, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-430df6bd3557-I12", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n    // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry snapshotRegistry) {\n        Objects.requireNonNull(snapshotRegistry);\n        offsets = new TimelineHashMap<>(snapshotRegistry, 0);\n        lastRedundantOffset = new TimelineLong(snapshotRegistry);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */\n    public void updateState(SharePartitionKey key, long offset, boolean isDelete) {\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), offset));\n        offsets.put(key, offset);\n\n        \n        (findRedundantOffset()).ifPresent(lastRedundantOffset::set);\n\n        // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (isDelete) {\n            offsets.remove(key);\n        }\n    }\n\n    private Optional<Long> findRedundantOffset() {\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long soFar = Long.MAX_VALUE;\n\n        for (long offset : offsets.values()) {\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            soFar = Math.min(soFar, offset);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (soFar == lastRedundantOffset.get()) {\n                return Optional.of(soFar);\n            }\n        }\n\n        return Optional.of(soFar);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> lastRedundantOffset() {\n        long value = lastRedundantOffset.get();\n        if (value <= 0 || value == Long.MAX_VALUE) {\n            return Optional.empty();\n        }\n\n        return Optional.of(value);\n    }\n\n    // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> curState() {\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c081568833a335140797b4633997df51b2ef68d03e500a661f3bb9ba2ee70236", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 110, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__ShareCoordinatorOffsetsManager__f6bd3557.java", "order": 12, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-430df6bd3557-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 293, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3ccae58ca293-I13", "source": "package org.apache.kafka.coordinator.share;\nimport org.apache.kafka.server.share.SharePartitionKey;\nimport org.apache.kafka.timeline.SnapshotRegistry;\nimport org.apache.kafka.timeline.TimelineHashMap;\nimport org.apache.kafka.timeline.TimelineLong;\nimport java.util.Objects;\nimport java.util.Optional;\n\n/**\n * Util class to track the offsets written into the internal topic\n * per share partition key.\n * It calculates the minimum offset globally up to which the records\n * in the internal partition are redundant i.e. they have been overridden\n * by newer records.\n */\npublic class ShareCoordinatorOffsetsManager {\n\n    // Map to store share partition key => current partition offset\n    // being written.\n    private final TimelineHashMap<SharePartitionKey, Long> offsets;\n\n    // Minimum offset representing the smallest necessary offset\n    // across the internal partition (offsets below this are redundant).\n    // We are using timeline object here because the offsets which are passed into\n    // updateState might not be committed yet. In case of retry, these offsets would\n    // be invalidated via the snapshot registry. Hence, using timeline object\n    // the values would automatically revert in accordance with the last committed offset.\n    private final TimelineLong lastRedundantOffset;\n\n    public ShareCoordinatorOffsetsManager(SnapshotRegistry snapshotRegistry) {\n        Objects.requireNonNull(snapshotRegistry);\n        offsets = new TimelineHashMap<>(snapshotRegistry, 0);\n        lastRedundantOffset = new TimelineLong(snapshotRegistry);\n        lastRedundantOffset.set(Long.MAX_VALUE);  // For easy application of Math.min.\n    }\n\n    /**\n     * Method updates internal state with the supplied offset for the provided\n     * share partition key. It then calculates the minimum offset, if possible,\n     * below which all offsets are redundant.\n     *\n     * @param key    - represents {@link SharePartitionKey} whose offset needs updating\n     * @param offset - represents the latest partition offset for provided key\n     * @param isDelete - true if the offset is for a tombstone record\n     */\n    public void updateState(SharePartitionKey key, long offset, boolean isDelete) {\n        lastRedundantOffset.set(Math.min(lastRedundantOffset.get(), offset));\n        offsets.put(key, offset);\n\n        Optional<Long> redundantOffset = findRedundantOffset();\n        redundantOffset.ifPresent(lastRedundantOffset::set);\n\n        // If the share partition is deleted, we should not hold onto its offset in our calculations\n        // as there is nothing beyond deletion which is going to update its state.\n        if (isDelete) {\n            offsets.remove(key);\n        }\n    }\n\n    private Optional<Long> findRedundantOffset() {\n        if (offsets.isEmpty()) {\n            return Optional.empty();\n        }\n\n        long soFar = Long.MAX_VALUE;\n\n        {\n          java.util.Iterator<?> loopIterator = (offsets.values()).iterator();\n          while (loopIterator.hasNext()) {\n            long offset = ((java.lang.Number) loopIterator.next()).longValue();\n            // Get min offset among latest offsets\n            // for all share keys in the internal partition.\n            soFar = Math.min(soFar, offset);\n\n            // lastRedundantOffset represents the smallest necessary offset\n            // and if soFar equals it, we cannot proceed. This can happen\n            // if a share partition key hasn't had records written for a while.\n            // For example,\n            // <p>\n            // key1:1\n            // key2:2 4 6\n            // key3:3 5 7\n            // <p>\n            // We can see in above that offsets 2, 4, 3, 5 are redundant,\n            // but we do not have a contiguous prefix starting at lastRedundantOffset\n            // and we cannot proceed.\n            if (soFar == lastRedundantOffset.get()) {\n                return Optional.of(soFar);\n            }\n          }\n        }\n\n        return Optional.of(soFar);\n    }\n\n    /**\n     * Most recent last redundant offset. This method is to be used\n     * when the caller wants to query the value of such offset.\n     * @return Optional of type Long representing the offset or empty for invalid offset values\n     */\n    public Optional<Long> lastRedundantOffset() {\n        long value = lastRedundantOffset.get();\n        if (value <= 0 || value == Long.MAX_VALUE) {\n            return Optional.empty();\n        }\n\n        return Optional.of(value);\n    }\n\n    // visible for testing\n    TimelineHashMap<SharePartitionKey, Long> curState() {\n        return offsets;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__ShareCoordinatorOffsetsManager__1a377579.java", "base_sample_id": "source-9b3c95da671e604c", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "33d9b2b7e1bc58fb7c5b51c36adf5184f3cd96be94773c5ba2a05f400a57958a", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java", "interference": "lower-for-to-while", "level": 13, "line_count": 114, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__ShareCoordinatorOffsetsManager__e58ca293.java", "order": 13, "original_content_sha256": "e62aea91b7e42f48933c60d53da861c619c805b1cbd555b6787b1c0ddf6af713", "parent_variant_id": "int-cff01a377579-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "share-coordinator/src/main/java/org/apache/kafka/coordinator/share/ShareCoordinatorOffsetsManager.java#L28-L129", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 1, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ShareCoordinatorOffsetsManager", "variant_id": "int-3ccae58ca293-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 294, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1b0fac3d79d3-SRC", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void ensureValid(final String name, final Object value) {\n        if (!(value instanceof String)) {\n            throw new ConfigException(name + \" must be a string\");\n        }\n\n        final String endPoint = (String) value;\n        if (Utils.isBlank(endPoint)) {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(endPoint);\n        } catch (final ConfigException e) {\n            throw new ConfigException(name, value, e.getMessage());\n        }\n    }\n\n    @Override\n    public String toString() {\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": null, "level": 0, "line_count": 30, "local_path": "source-original/SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "order": 0, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-1b0fac3d79d3-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 29, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-95a0f188f4bc-I01", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void ensureValid(final String name, final Object value) {\n        if (!(value instanceof String)) {\n            throw new ConfigException(name + \" must be a string\");\n        }\n\n        final String endPoint = (String) value;\n        if (Utils.isBlank(endPoint)) {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(endPoint);\n        } catch (final ConfigException e) {\n            throw new ConfigException(name, value, e.getMessage());\n        }\n    }\n\n    @Override\n    public String toString() {\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "remove-comments", "level": 1, "line_count": 30, "local_path": "comments/remove-comments/I01__apache-kafka__ApplicationServerConfigValidator__f188f4bc.java", "order": 1, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 0, "comments_removed": 0}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-95a0f188f4bc-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 30, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3d8bc1a8c837-I02", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void ensure(final String nam, final Object val) {\n        if (!(val instanceof String)) {\n            throw new ConfigException(nam + \" must be a string\");\n        }\n\n        final String end = (String) val;\n        if (Utils.isBlank(end)) {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(end);\n        } catch (final ConfigException e) {\n            throw new ConfigException(nam, val, e.getMessage());\n        }\n    }\n\n    @Override\n    public String to() {\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e0e308f5daafea43510fedc881ae799535432fead05048f8a5ea42bcb650f826", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "shorten-identifiers", "level": 2, "line_count": 30, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__ApplicationServerConfigValidator__c1a8c837.java", "order": 2, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 4, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-3d8bc1a8c837-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 31, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-645c50958ad7-I03", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void saveBalance(final String mode, final Object batch) {\n        if (!(batch instanceof String)) {\n            throw new ConfigException(mode + \" must be a string\");\n        }\n\n        final String nextItem = (String) batch;\n        if (Utils.isBlank(nextItem)) {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(nextItem);\n        } catch (final ConfigException age) {\n            throw new ConfigException(mode, batch, age.getMessage());\n        }\n    }\n\n    @Override\n    public String sendUser() {\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "25a53e3c6566858776ce67c42ca66636594e6be8a775a7798a174a382033c729", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "mislead-identifiers", "level": 3, "line_count": 30, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__ApplicationServerConfigValidator__50958ad7.java", "order": 3, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 4, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 3, "local_random_pool_selections": 4, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 2, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-645c50958ad7-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 32, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e8485988e5bc-I04", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void a(final String a, final Object b) {\n        if (!(b instanceof String)) {\n            throw new ConfigException(a + \" must be a string\");\n        }\n\n        final String c = (String) b;\n        if (Utils.isBlank(c)) {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(c);\n        } catch (final ConfigException d) {\n            throw new ConfigException(a, b, d.getMessage());\n        }\n    }\n\n    @Override\n    public String b() {\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "dbafc54cb1029cd836028f18f7f4540d0037eff74981d39dd8f4fb2a73f8ac9d", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "garble-identifiers", "level": 4, "line_count": 30, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__ApplicationServerConfigValidator__5988e5bc.java", "order": 4, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 4, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-e8485988e5bc-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 33, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9c0e7af56603-I05", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void ensureValid(final String name, final Object value) {\n        if (!(value instanceof String)) {\n            throw new ConfigException(name + \" must be a string\");\n        }\n\n        final String endPoint = (String) value;\n        if (Utils.isBlank(endPoint)) {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(endPoint);\n        } catch (final ConfigException e) {\n            throw new ConfigException(name, value, e.getMessage());\n        }\n    }\n\n    @Override\n    public String toString() {\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "encode-integer-literals", "level": 5, "line_count": 30, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__ApplicationServerConfigValidator__7af56603.java", "order": 5, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-9c0e7af56603-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 34, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2b92cfcf827c-I06", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void ensureValid(final String name, final Object value) {\n        if (!((!(value instanceof String)))) {} else {\n            throw new ConfigException(name + \" must be a string\");\n        }\n\n        final String endPoint = (String) value;\n        if (!((Utils.isBlank(endPoint)))) {} else {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(endPoint);\n        } catch (final ConfigException e) {\n            throw new ConfigException(name, value, e.getMessage());\n        }\n    }\n\n    @Override\n    public String toString() {\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "403c51cf512a3ffc257f04069b170feb9ec0077a3f33ffb680ff1faa5e03a8a6", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "invert-conditions", "level": 6, "line_count": 30, "local_path": "expressions/invert-conditions/I06__apache-kafka__ApplicationServerConfigValidator__cfcf827c.java", "order": 6, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-2b92cfcf827c-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 35, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9f8ce64f37f7-I07", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void ensureValid(final String name, final Object value) {\nif (((0x4B63 ^ 0x4B63) != 0)) { throw new AssertionError(); }\n\n        if (!(value instanceof String)) {\n            throw new ConfigException(name + \" must be a string\");\n        }\n\n        final String endPoint = (String) value;\n        if (Utils.isBlank(endPoint)) {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(endPoint);\n        } catch (final ConfigException e) {\n            throw new ConfigException(name, value, e.getMessage());\n        }\n    }\n\n    @Override\n    public String toString() {\nif (((0xD037 ^ 0xD037) != 0)) { throw new AssertionError(); }\n\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5e7b70e23aa0a69f078251d09849eb71594f5cb8a7a9da7d432136b71cf4d6e3", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "insert-dead-branches", "level": 7, "line_count": 34, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__ApplicationServerConfigValidator__e64f37f7.java", "order": 7, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 2}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-9f8ce64f37f7-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 36, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-17ee30a9ee18-I08", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void ensureValid(final String name, final Object value) {\n{\n  int startingPosition = 2;\n  int endingPosition = 9;\n  int travelDistance = endingPosition - startingPosition;\n  if (travelDistance < 0) {\n    travelDistance = -travelDistance;\n  }\n}\n\n        if (!(value instanceof String)) {\n            throw new ConfigException(name + \" must be a string\");\n        }\n\n        final String endPoint = (String) value;\n        if (Utils.isBlank(endPoint)) {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(endPoint);\n        } catch (final ConfigException e) {\n            throw new ConfigException(name, value, e.getMessage());\n        }\n    }\n\n    @Override\n    public String toString() {\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d20108da46df238e5a6caba2791e931591044bd8b734b8523f1be06c8d9cf86f", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 39, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__ApplicationServerConfigValidator__30a9ee18.java", "order": 8, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 9}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-17ee30a9ee18-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 37, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-73ab910f3f23-I09", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void ensureValid(final String name, final Object value) {\n        if (!(value instanceof String)) {\n            throw new ConfigException(name + \" must be a string\");\n        }\n\n        final String endPoint = (String) value;\n        if (Utils.isBlank(endPoint)) {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(endPoint);\n        } catch (final ConfigException e) {\n            throw new ConfigException(name, value, e.getMessage());\n        }\n    }\n\n    @Override\n    public String toString() {\n{int lI0O_57de2d0b=0x2821;lI0O_57de2d0b=((lI0O_57de2d0b&0)==0)?(((lI0O_57de2d0b^lI0O_57de2d0b)==0)?0:1):2;}\n\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "006423333ebf66e329f1b12c40fec44d16a32338fe00dee205e9d70a440673dc", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 32, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__ApplicationServerConfigValidator__910f3f23.java", "order": 9, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 8}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-73ab910f3f23-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 38, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a0a74f362e3b-I10", "source": "package org.apache.kafka.streams.internals; import org.apache.kafka.common.config.ConfigDef; import org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void ensureValid(final String name, final Object value) { if (!(value instanceof String)) {\n            throw new ConfigException(name + \" must be a string\"); }\n\n        final String endPoint = (String) value; if (Utils.isBlank(endPoint)) { return; }\n        try {\n            HostInfo.buildFromEndpoint(endPoint);\n        } catch (final ConfigException e) {\n            throw new ConfigException(name, value, e.getMessage());\n        } } @Override\n    public String toString() {\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "ed59cf33f9f7fe3dec6a67b568b3e6f2da956e8bb026fd24a8f542fde4a176cc", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "partially-compact-layout", "level": 10, "line_count": 19, "local_path": "layout/partially-compact-layout/I10__apache-kafka__ApplicationServerConfigValidator__4f362e3b.java", "order": 10, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 25, "line_break_groups_removed": 10, "line_breaks_removed": 11, "whitespace_characters_removed": 53}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-a0a74f362e3b-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 39, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9f9b171c232a-I11", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void ensureValid(final String name, final Object value) {\n        if (!(value instanceof String)) {\n            throw new ConfigException(name + \" must be a string\");\n        }\n\n        final String endPoint = (String) value;\n        if (Utils.isBlank(endPoint)) {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(endPoint);\n        } catch (final ConfigException e) {\n            throw new ConfigException(name, value, e.getMessage());\n        }\n    }\n\n    @Override\n    public String toString() {\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 30, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__ApplicationServerConfigValidator__171c232a.java", "order": 11, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-9f9b171c232a-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 40, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ac4537c7c53e-I12", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void ensureValid(final String name, final Object value) {\n        if (!(value instanceof String)) {\n            throw new ConfigException(name + \" must be a string\");\n        }\n\n        final String endPoint = (String) value;\n        if (Utils.isBlank(endPoint)) {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(endPoint);\n        } catch (final ConfigException e) {\n            throw new ConfigException(name, value, e.getMessage());\n        }\n    }\n\n    @Override\n    public String toString() {\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 30, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__ApplicationServerConfigValidator__37c7c53e.java", "order": 12, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-ac4537c7c53e-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 41, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cd5fe714f604-I13", "source": "package org.apache.kafka.streams.internals;\nimport org.apache.kafka.common.config.ConfigDef;\nimport org.apache.kafka.common.config.ConfigException;\nimport org.apache.kafka.common.utils.Utils;\nimport org.apache.kafka.streams.state.HostInfo;\n\npublic class ApplicationServerConfigValidator implements ConfigDef.Validator {\n\n    @Override\n    public void ensureValid(final String name, final Object value) {\n        if (!(value instanceof String)) {\n            throw new ConfigException(name + \" must be a string\");\n        }\n\n        final String endPoint = (String) value;\n        if (Utils.isBlank(endPoint)) {\n            return;\n        }\n        try {\n            HostInfo.buildFromEndpoint(endPoint);\n        } catch (final ConfigException e) {\n            throw new ConfigException(name, value, e.getMessage());\n        }\n    }\n\n    @Override\n    public String toString() {\n        return \"A host:port pair, protocol://host:port, or an empty string\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__ApplicationServerConfigValidator__ac3d79d3.java", "base_sample_id": "source-0f5f3539894e2424", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java", "interference": "lower-for-to-while", "level": 13, "line_count": 30, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__ApplicationServerConfigValidator__e714f604.java", "order": 13, "original_content_sha256": "391338b995760d3f77e5af3a7ddd73b6c53e3fe2bd332a73aadc7aefd2d07339", "parent_variant_id": "int-1b0fac3d79d3-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/internals/ApplicationServerConfigValidator.java#L24-L47", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ApplicationServerConfigValidator", "variant_id": "int-cd5fe714f604-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 42, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-469158f17a02-SRC", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */\n    long restore(final Map<TaskId, Task> tasks);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void enforceRestoreActive();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void transitToUpdateStandby();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */\n    boolean isRestoringActive();\n\n    /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> completedChangelogs();\n\n    /**\n     * @return the logical changelog partitions end-offsets\n     */\n    Map<TopicPartition, Long> logicalChangelogEndOffsets();\n\n    /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean allChangelogsCompleted();\n\n    /**\n     * Clear all partitions\n     */\n    void clear();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */\n    boolean isEmpty();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": null, "level": 0, "line_count": 64, "local_path": "source-original/SRC__apache-kafka__ChangelogReader__58f17a02.java", "order": 0, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-469158f17a02-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 57, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0f76385d78fc-I01", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n\n\n\npublic interface ChangelogReader extends ChangelogRegister {\n    \n\n\n\n\n    long restore(final Map<TaskId, Task> tasks);\n\n    \n\n\n    void enforceRestoreActive();\n\n    \n\n\n    void transitToUpdateStandby();\n\n    \n\n\n\n    boolean isRestoringActive();\n\n    \n\n\n    Set<TopicPartition> completedChangelogs();\n\n    \n\n\n    Map<TopicPartition, Long> logicalChangelogEndOffsets();\n\n    \n\n\n\n\n\n\n\n\n    boolean allChangelogsCompleted();\n\n    \n\n\n    void clear();\n\n    \n\n\n    boolean isEmpty();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "36bcd0f231b377b167199dfb4afafdf86cabbce9b4490d369f6bb1c722d8d131", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "remove-comments", "level": 1, "line_count": 64, "local_path": "comments/remove-comments/I01__apache-kafka__ChangelogReader__385d78fc.java", "order": 1, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1207, "comments_removed": 10}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-0f76385d78fc-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 58, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5d453bff9a93-I02", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */\n    long res(final Map<TaskId, Task> tas);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void enforce();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void transit();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */\n    boolean is();\n\n    /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> completed();\n\n    /**\n     * @return the logical changelog partitions end-offsets\n     */\n    Map<TopicPartition, Long> logical();\n\n    /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean all();\n\n    /**\n     * Clear all partitions\n     */\n    void cle();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */\n    boolean is2();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "56e272b438315ba56482a3a0a2edb3fd720a96892c2344a4d8042ed038888587", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "shorten-identifiers", "level": 2, "line_count": 64, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__ChangelogReader__3bff9a93.java", "order": 2, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 1, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 9, "method_name_collisions_avoided": 1, "method_name_groups": 9}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-5d453bff9a93-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 59, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-323f8f61b84f-I03", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */\n    long connect(final Map<TaskId, Task> score);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void validateBalance();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void validateMessage();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */\n    boolean validateAddress();\n\n    /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> validateSession();\n\n    /**\n     * @return the logical changelog partitions end-offsets\n     */\n    Map<TopicPartition, Long> validateAccount();\n\n    /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean validateRequest();\n\n    /**\n     * Clear all partitions\n     */\n    void check();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */\n    boolean refresh();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "67514ff7935121abae0f7defc910a00d184fc36b7c46c01fd837b62efffd3672", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "mislead-identifiers", "level": 3, "line_count": 64, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__ChangelogReader__8f61b84f.java", "order": 3, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 1, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 1, "local_random_pool_selections": 1, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 4, "method_declarations_renamed": 9, "method_exact_length_matches": 3, "method_name_groups": 9, "method_random_pool_selections": 9, "method_total_length_difference": 36}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-323f8f61b84f-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 60, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9605d5332d2d-I04", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */\n    long a(final Map<TaskId, Task> a);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void b();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void c();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */\n    boolean d();\n\n    /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> e();\n\n    /**\n     * @return the logical changelog partitions end-offsets\n     */\n    Map<TopicPartition, Long> f();\n\n    /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean g();\n\n    /**\n     * Clear all partitions\n     */\n    void h();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */\n    boolean i();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "8005c9146d984b1f79e5ebb48844095487a4da0b60191888212746a2b7024b10", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "garble-identifiers", "level": 4, "line_count": 64, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__ChangelogReader__d5332d2d.java", "order": 4, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 1, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 9, "method_name_collisions_avoided": 0, "method_name_groups": 9}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-9605d5332d2d-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 61, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-011177fc74cc-I05", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */\n    long restore(final Map<TaskId, Task> tasks);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void enforceRestoreActive();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void transitToUpdateStandby();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */\n    boolean isRestoringActive();\n\n    /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> completedChangelogs();\n\n    /**\n     * @return the logical changelog partitions end-offsets\n     */\n    Map<TopicPartition, Long> logicalChangelogEndOffsets();\n\n    /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean allChangelogsCompleted();\n\n    /**\n     * Clear all partitions\n     */\n    void clear();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */\n    boolean isEmpty();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "encode-integer-literals", "level": 5, "line_count": 64, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__ChangelogReader__77fc74cc.java", "order": 5, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-011177fc74cc-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 62, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d820fef8cbce-I06", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */\n    long restore(final Map<TaskId, Task> tasks);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void enforceRestoreActive();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void transitToUpdateStandby();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */\n    boolean isRestoringActive();\n\n    /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> completedChangelogs();\n\n    /**\n     * @return the logical changelog partitions end-offsets\n     */\n    Map<TopicPartition, Long> logicalChangelogEndOffsets();\n\n    /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean allChangelogsCompleted();\n\n    /**\n     * Clear all partitions\n     */\n    void clear();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */\n    boolean isEmpty();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "invert-conditions", "level": 6, "line_count": 64, "local_path": "expressions/invert-conditions/I06__apache-kafka__ChangelogReader__fef8cbce.java", "order": 6, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-d820fef8cbce-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 63, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9c357eb7e9cf-I07", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */\n    long restore(final Map<TaskId, Task> tasks);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void enforceRestoreActive();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void transitToUpdateStandby();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */\n    boolean isRestoringActive();\n\n    /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> completedChangelogs();\n\n    /**\n     * @return the logical changelog partitions end-offsets\n     */\n    Map<TopicPartition, Long> logicalChangelogEndOffsets();\n\n    /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean allChangelogsCompleted();\n\n    /**\n     * Clear all partitions\n     */\n    void clear();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */\n    boolean isEmpty();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "insert-dead-branches", "level": 7, "line_count": 64, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__ChangelogReader__7eb7e9cf.java", "order": 7, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-9c357eb7e9cf-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 64, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c8fb59573ebc-I08", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */\n    long restore(final Map<TaskId, Task> tasks);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void enforceRestoreActive();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void transitToUpdateStandby();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */\n    boolean isRestoringActive();\n\n    /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> completedChangelogs();\n\n    /**\n     * @return the logical changelog partitions end-offsets\n     */\n    Map<TopicPartition, Long> logicalChangelogEndOffsets();\n\n    /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean allChangelogsCompleted();\n\n    /**\n     * Clear all partitions\n     */\n    void clear();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */\n    boolean isEmpty();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 64, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__ChangelogReader__59573ebc.java", "order": 8, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-c8fb59573ebc-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 65, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6454b1862717-I09", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */\n    long restore(final Map<TaskId, Task> tasks);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void enforceRestoreActive();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void transitToUpdateStandby();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */\n    boolean isRestoringActive();\n\n    /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> completedChangelogs();\n\n    /**\n     * @return the logical changelog partitions end-offsets\n     */\n    Map<TopicPartition, Long> logicalChangelogEndOffsets();\n\n    /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean allChangelogsCompleted();\n\n    /**\n     * Clear all partitions\n     */\n    void clear();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */\n    boolean isEmpty();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 64, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__ChangelogReader__b1862717.java", "order": 9, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-6454b1862717-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 66, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-71794f980557-I10", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map; import java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */ long restore(final Map<TaskId, Task> tasks);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void enforceRestoreActive();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void transitToUpdateStandby();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */ boolean isRestoringActive(); /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> completedChangelogs(); /**\n     * @return the logical changelog partitions end-offsets\n     */ Map<TopicPartition, Long> logicalChangelogEndOffsets(); /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean allChangelogsCompleted();\n\n    /**\n     * Clear all partitions\n     */ void clear();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */ boolean isEmpty(); }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "8414e32ade3026e4dd74bc6b49941b3d1edc43eef269da6007c779e8b2446b88", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "partially-compact-layout", "level": 10, "line_count": 51, "local_path": "layout/partially-compact-layout/I10__apache-kafka__ChangelogReader__4f980557.java", "order": 10, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 25, "line_break_groups_removed": 10, "line_breaks_removed": 13, "whitespace_characters_removed": 35}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-71794f980557-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 67, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dfbbca9f8ae9-I11", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */\n    long restore(final Map<TaskId, Task> tasks);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void enforceRestoreActive();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void transitToUpdateStandby();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */\n    boolean isRestoringActive();\n\n    /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> completedChangelogs();\n\n    /**\n     * @return the logical changelog partitions end-offsets\n     */\n    Map<TopicPartition, Long> logicalChangelogEndOffsets();\n\n    /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean allChangelogsCompleted();\n\n    /**\n     * Clear all partitions\n     */\n    void clear();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */\n    boolean isEmpty();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 64, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__ChangelogReader__ca9f8ae9.java", "order": 11, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-dfbbca9f8ae9-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 68, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-679078f80f68-I12", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */\n    long restore(final Map<TaskId, Task> tasks);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void enforceRestoreActive();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void transitToUpdateStandby();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */\n    boolean isRestoringActive();\n\n    /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> completedChangelogs();\n\n    /**\n     * @return the logical changelog partitions end-offsets\n     */\n    Map<TopicPartition, Long> logicalChangelogEndOffsets();\n\n    /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean allChangelogsCompleted();\n\n    /**\n     * Clear all partitions\n     */\n    void clear();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */\n    boolean isEmpty();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 64, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__ChangelogReader__78f80f68.java", "order": 12, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-679078f80f68-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 69, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ccf918f5c067-I13", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.TopicPartition;\nimport org.apache.kafka.streams.processor.TaskId;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * See {@link StoreChangelogReader}.\n */\npublic interface ChangelogReader extends ChangelogRegister {\n    /**\n     * Restore all registered state stores by reading from their changelogs\n     *\n     * @return the total number of records restored in this call\n     */\n    long restore(final Map<TaskId, Task> tasks);\n\n    /**\n     * Transit to restore active changelogs mode\n     */\n    void enforceRestoreActive();\n\n    /**\n     * Transit to update standby changelogs mode\n     */\n    void transitToUpdateStandby();\n\n    /**\n     * @return true if the reader is in restoring active changelog mode;\n     *         false if the reader is in updating standby changelog mode\n     */\n    boolean isRestoringActive();\n\n    /**\n     * @return the changelog partitions that have been completed restoring\n     */\n    Set<TopicPartition> completedChangelogs();\n\n    /**\n     * @return the logical changelog partitions end-offsets\n     */\n    Map<TopicPartition, Long> logicalChangelogEndOffsets();\n\n    /**\n     * Returns whether all changelog partitions were completely read.\n     *\n     * Since changelog partitions for standby tasks are never completely read, this method will always return\n     * {@code false} if the changelog reader registered changelog partitions for standby tasks.\n     *\n     * @return {@code true} if all changelog partitions were completely read and no standby changelog partitions are read,\n     *         {@code false} otherwise\n     */\n    boolean allChangelogsCompleted();\n\n    /**\n     * Clear all partitions\n     */\n    void clear();\n\n    /**\n     * @return whether the changelog reader has just been cleared or is uninitialized\n     */\n    boolean isEmpty();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__ChangelogReader__58f17a02.java", "base_sample_id": "source-817dcb1a53a30ba1", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java", "interference": "lower-for-to-while", "level": 13, "line_count": 64, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__ChangelogReader__18f5c067.java", "order": 13, "original_content_sha256": "29c06acfc0d75aff4f618bdb50d64c0e4d53c086ade968ec7c1a777fdcd9978c", "parent_variant_id": "int-469158f17a02-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/ChangelogReader.java#L25-L82", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "ChangelogReader", "variant_id": "int-ccf918f5c067-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 70, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4a063e532a75-SRC", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String name, final Map<String, String> topicConfigs, final long retentionMs) {\n        super(name, topicConfigs);\n        this.retentionMs = retentionMs;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */\n    @Override\n    public Map<String, String> properties(final Map<String, String> defaultProperties, final long additionalRetentionMs) {\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> topicConfig = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        topicConfig.putAll(defaultProperties);\n\n        topicConfig.putAll(topicConfigs);\n\n        if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long retentionValue;\n            try {\n                retentionValue = Math.addExact(retentionMs, additionalRetentionMs);\n            } catch (final ArithmeticException swallow) {\n                retentionValue = Long.MAX_VALUE;\n            }\n            topicConfig.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionValue));\n        }\n\n        return topicConfig;\n    }\n\n    @Override\n    public boolean equals(final Object o) {\n        if (this == o) {\n            return true;\n        }\n        if (o == null || getClass() != o.getClass()) {\n            return false;\n        }\n        final WindowedChangelogTopicConfig that = (WindowedChangelogTopicConfig) o;\n        return Objects.equals(name, that.name) &&\n               Objects.equals(topicConfigs, that.topicConfigs) &&\n               Objects.equals(retentionMs, that.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, that.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String toString() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": null, "level": 0, "line_count": 86, "local_path": "source-original/SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "order": 0, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-4a063e532a75-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 337, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-77234e1573b7-I01", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n\n\n\n\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String name, final Map<String, String> topicConfigs, final long retentionMs) {\n        super(name, topicConfigs);\n        this.retentionMs = retentionMs;\n    }\n\n    \n\n\n\n\n\n\n\n    @Override\n    public Map<String, String> properties(final Map<String, String> defaultProperties, final long additionalRetentionMs) {\n         \n        final Map<String, String> topicConfig = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        topicConfig.putAll(defaultProperties);\n\n        topicConfig.putAll(topicConfigs);\n\n        if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long retentionValue;\n            try {\n                retentionValue = Math.addExact(retentionMs, additionalRetentionMs);\n            } catch (final ArithmeticException swallow) {\n                retentionValue = Long.MAX_VALUE;\n            }\n            topicConfig.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionValue));\n        }\n\n        return topicConfig;\n    }\n\n    @Override\n    public boolean equals(final Object o) {\n        if (this == o) {\n            return true;\n        }\n        if (o == null || getClass() != o.getClass()) {\n            return false;\n        }\n        final WindowedChangelogTopicConfig that = (WindowedChangelogTopicConfig) o;\n        return Objects.equals(name, that.name) &&\n               Objects.equals(topicConfigs, that.topicConfigs) &&\n               Objects.equals(retentionMs, that.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, that.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String toString() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "6f147ce7325414e5b14513623983f62ccdf814887646c022c96d50b7585d58de", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "remove-comments", "level": 1, "line_count": 86, "local_path": "comments/remove-comments/I01__apache-kafka__WindowedChangelogTopicConfig__4e1573b7.java", "order": 1, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 629, "comments_removed": 3}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-77234e1573b7-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 338, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c666481453fc-I02", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String nam, final Map<String, String> topic, final long retention) {\n        super(nam, topic);\n        this.retentionMs = retention;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */\n    @Override\n    public Map<String, String> pro(final Map<String, String> default2, final long additional) {\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> topic2 = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        topic2.putAll(default2);\n\n        topic2.putAll(topicConfigs);\n\n        if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long retention2;\n            try {\n                retention2 = Math.addExact(retentionMs, additional);\n            } catch (final ArithmeticException swa) {\n                retention2 = Long.MAX_VALUE;\n            }\n            topic2.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retention2));\n        }\n\n        return topic2;\n    }\n\n    @Override\n    public boolean equ(final Object o) {\n        if (this == o) {\n            return true;\n        }\n        if (o == null || getClass() != o.getClass()) {\n            return false;\n        }\n        final WindowedChangelogTopicConfig tha = (WindowedChangelogTopicConfig) o;\n        return Objects.equals(name, tha.name) &&\n               Objects.equals(topicConfigs, tha.topicConfigs) &&\n               Objects.equals(retentionMs, tha.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, tha.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int hash() {\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String to() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "f372aefdb1eaea4baae7a33341dae799f519106e3f42525cd421453c15f79fa8", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "shorten-identifiers", "level": 2, "line_count": 86, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__WindowedChangelogTopicConfig__481453fc.java", "order": 2, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 20, "identifiers_declared": 10, "local_name_collisions_avoided": 3, "method_calls_renamed": 0, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-c666481453fc-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 339, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-42cc96a74db5-I03", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String data, final Map<String, String> pendingCache, final long finalBuffer) {\n        super(data, pendingCache);\n        this.retentionMs = finalBuffer;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */\n    @Override\n    public Map<String, String> readClient(final Map<String, String> primaryRequest, final long primaryAddress) {\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> remoteOrder = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        remoteOrder.putAll(primaryRequest);\n\n        remoteOrder.putAll(topicConfigs);\n\n        if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long currentAddress;\n            try {\n                currentAddress = Math.addExact(retentionMs, primaryAddress);\n            } catch (final ArithmeticException balance) {\n                currentAddress = Long.MAX_VALUE;\n            }\n            remoteOrder.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(currentAddress));\n        }\n\n        return remoteOrder;\n    }\n\n    @Override\n    public boolean filter(final Object key) {\n        if (this == key) {\n            return true;\n        }\n        if (key == null || getClass() != key.getClass()) {\n            return false;\n        }\n        final WindowedChangelogTopicConfig step = (WindowedChangelogTopicConfig) key;\n        return Objects.equals(name, step.name) &&\n               Objects.equals(topicConfigs, step.topicConfigs) &&\n               Objects.equals(retentionMs, step.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, step.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int loadUser() {\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String evaluate() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7bd0dbc0c69cf08718d3530468aadc694061c4113b61e5247becc1871a1c15dc", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "mislead-identifiers", "level": 3, "line_count": 86, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__WindowedChangelogTopicConfig__96a74db5.java", "order": 3, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 20, "identifiers_declared": 10, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 3, "local_exact_length_matches": 7, "local_random_pool_selections": 10, "local_total_length_difference": 12, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 4, "method_name_groups": 4, "method_random_pool_selections": 4, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-42cc96a74db5-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 340, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ce557b68df27-I04", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String a, final Map<String, String> b, final long c) {\n        super(a, b);\n        this.retentionMs = c;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */\n    @Override\n    public Map<String, String> a(final Map<String, String> d, final long e) {\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> f = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        f.putAll(d);\n\n        f.putAll(topicConfigs);\n\n        if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long g;\n            try {\n                g = Math.addExact(retentionMs, e);\n            } catch (final ArithmeticException h) {\n                g = Long.MAX_VALUE;\n            }\n            f.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(g));\n        }\n\n        return f;\n    }\n\n    @Override\n    public boolean b(final Object i) {\n        if (this == i) {\n            return true;\n        }\n        if (i == null || getClass() != i.getClass()) {\n            return false;\n        }\n        final WindowedChangelogTopicConfig j = (WindowedChangelogTopicConfig) i;\n        return Objects.equals(name, j.name) &&\n               Objects.equals(topicConfigs, j.topicConfigs) &&\n               Objects.equals(retentionMs, j.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, j.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int c() {\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String d() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "bc2393fa51c01a6529c3cdea5493a5704238bb677b0e468a7ac2afbb2661f7be", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "garble-identifiers", "level": 4, "line_count": 86, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__WindowedChangelogTopicConfig__7b68df27.java", "order": 4, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 20, "identifiers_declared": 10, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-ce557b68df27-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 341, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a6746d90bc88-I05", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String name, final Map<String, String> topicConfigs, final long retentionMs) {\n        super(name, topicConfigs);\n        this.retentionMs = retentionMs;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */\n    @Override\n    public Map<String, String> properties(final Map<String, String> defaultProperties, final long additionalRetentionMs) {\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> topicConfig = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        topicConfig.putAll(defaultProperties);\n\n        topicConfig.putAll(topicConfigs);\n\n        if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long retentionValue;\n            try {\n                retentionValue = Math.addExact(retentionMs, additionalRetentionMs);\n            } catch (final ArithmeticException swallow) {\n                retentionValue = Long.MAX_VALUE;\n            }\n            topicConfig.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionValue));\n        }\n\n        return topicConfig;\n    }\n\n    @Override\n    public boolean equals(final Object o) {\n        if (this == o) {\n            return true;\n        }\n        if (o == null || getClass() != o.getClass()) {\n            return false;\n        }\n        final WindowedChangelogTopicConfig that = (WindowedChangelogTopicConfig) o;\n        return Objects.equals(name, that.name) &&\n               Objects.equals(topicConfigs, that.topicConfigs) &&\n               Objects.equals(retentionMs, that.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, that.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String toString() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "encode-integer-literals", "level": 5, "line_count": 86, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__WindowedChangelogTopicConfig__6d90bc88.java", "order": 5, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-a6746d90bc88-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 342, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-170df497d0e2-I06", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String name, final Map<String, String> topicConfigs, final long retentionMs) {\n        super(name, topicConfigs);\n        this.retentionMs = retentionMs;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */\n    @Override\n    public Map<String, String> properties(final Map<String, String> defaultProperties, final long additionalRetentionMs) {\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> topicConfig = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        topicConfig.putAll(defaultProperties);\n\n        topicConfig.putAll(topicConfigs);\n\n        if (!((!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)))) {} else {\n            long retentionValue;\n            try {\n                retentionValue = Math.addExact(retentionMs, additionalRetentionMs);\n            } catch (final ArithmeticException swallow) {\n                retentionValue = Long.MAX_VALUE;\n            }\n            topicConfig.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionValue));\n        }\n\n        return topicConfig;\n    }\n\n    @Override\n    public boolean equals(final Object o) {\n        if (!((this == o))) {} else {\n            return true;\n        }\n        if (!((o == null || getClass() != o.getClass()))) {} else {\n            return false;\n        }\n        final WindowedChangelogTopicConfig that = (WindowedChangelogTopicConfig) o;\n        return Objects.equals(name, that.name) &&\n               Objects.equals(topicConfigs, that.topicConfigs) &&\n               Objects.equals(retentionMs, that.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, that.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String toString() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "af92aa7f3c69d5e3992011036308a22c2b9f950739ad5684bd94fa135dbb67f2", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "invert-conditions", "level": 6, "line_count": 86, "local_path": "expressions/invert-conditions/I06__apache-kafka__WindowedChangelogTopicConfig__f497d0e2.java", "order": 6, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 3}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-170df497d0e2-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 343, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-79535a097f5d-I07", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String name, final Map<String, String> topicConfigs, final long retentionMs) {\n        super(name, topicConfigs);\nif (((0x81F5 ^ 0x81F5) != 0)) { throw new AssertionError(); }\n\n        this.retentionMs = retentionMs;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */\n    @Override\n    public Map<String, String> properties(final Map<String, String> defaultProperties, final long additionalRetentionMs) {\nif (((0x1266 ^ 0x1266) != 0)) { throw new AssertionError(); }\n\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> topicConfig = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        topicConfig.putAll(defaultProperties);\n\n        topicConfig.putAll(topicConfigs);\n\n        if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long retentionValue;\n            try {\n                retentionValue = Math.addExact(retentionMs, additionalRetentionMs);\n            } catch (final ArithmeticException swallow) {\n                retentionValue = Long.MAX_VALUE;\n            }\n            topicConfig.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionValue));\n        }\n\n        return topicConfig;\n    }\n\n    @Override\n    public boolean equals(final Object o) {\nif (((0x1D89 ^ 0x1D89) != 0)) { throw new AssertionError(); }\n\n        if (this == o) {\n            return true;\n        }\n        if (o == null || getClass() != o.getClass()) {\n            return false;\n        }\n        final WindowedChangelogTopicConfig that = (WindowedChangelogTopicConfig) o;\n        return Objects.equals(name, that.name) &&\n               Objects.equals(topicConfigs, that.topicConfigs) &&\n               Objects.equals(retentionMs, that.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, that.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int hashCode() {\nif (((0xA20A ^ 0xA20A) != 0)) { throw new AssertionError(); }\n\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String toString() {\nif (((0x71AE ^ 0x71AE) != 0)) { throw new AssertionError(); }\n\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "1ae625ac7741c00778ccfaed75a008ffae49814b72bf8e448c7572108a5d17bb", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "insert-dead-branches", "level": 7, "line_count": 96, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__WindowedChangelogTopicConfig__5a097f5d.java", "order": 7, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 5}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-79535a097f5d-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 344, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-066e7c076d4e-I08", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String name, final Map<String, String> topicConfigs, final long retentionMs) {\n        super(name, topicConfigs);\n        this.retentionMs = retentionMs;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */\n    @Override\n    public Map<String, String> properties(final Map<String, String> defaultProperties, final long additionalRetentionMs) {\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> topicConfig = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        topicConfig.putAll(defaultProperties);\n\n        topicConfig.putAll(topicConfigs);\n\n        if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long retentionValue;\n            try {\n                retentionValue = Math.addExact(retentionMs, additionalRetentionMs);\n            } catch (final ArithmeticException swallow) {\n                retentionValue = Long.MAX_VALUE;\n            }\n            topicConfig.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionValue));\n        }\n\n        return topicConfig;\n    }\n\n    @Override\n    public boolean equals(final Object o) {\n        if (this == o) {\n            return true;\n        }\n        if (o == null || getClass() != o.getClass()) {\n            return false;\n        }\n        final WindowedChangelogTopicConfig that = (WindowedChangelogTopicConfig) o;\n        return Objects.equals(name, that.name) &&\n               Objects.equals(topicConfigs, that.topicConfigs) &&\n               Objects.equals(retentionMs, that.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, that.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int hashCode() {\n{\n  boolean featureEnabled = false;\n  for (int toggleCount = 0; toggleCount < 3; toggleCount++) {\n    featureEnabled = !featureEnabled;\n  }\n}\n\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String toString() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "27351e0592ccb8bebfa7f591658e984e2a721a346b95e54fb1c624bc3af221e6", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 93, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__WindowedChangelogTopicConfig__7c076d4e.java", "order": 8, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 7}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-066e7c076d4e-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 345, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5a80e1d0aba6-I09", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String name, final Map<String, String> topicConfigs, final long retentionMs) {\n        super(name, topicConfigs);\n{int lI0O_bdf48047=0x4F54;lI0O_bdf48047=((lI0O_bdf48047^0x4F54)|0)&-1;if(((lI0O_bdf48047&1)==1)){lI0O_bdf48047^=lI0O_bdf48047;}}\n\n        this.retentionMs = retentionMs;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */\n    @Override\n    public Map<String, String> properties(final Map<String, String> defaultProperties, final long additionalRetentionMs) {\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> topicConfig = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        topicConfig.putAll(defaultProperties);\n\n        topicConfig.putAll(topicConfigs);\n\n        if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long retentionValue;\n            try {\n                retentionValue = Math.addExact(retentionMs, additionalRetentionMs);\n            } catch (final ArithmeticException swallow) {\n                retentionValue = Long.MAX_VALUE;\n            }\n            topicConfig.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionValue));\n        }\n\n        return topicConfig;\n    }\n\n    @Override\n    public boolean equals(final Object o) {\n        if (this == o) {\n            return true;\n        }\n        if (o == null || getClass() != o.getClass()) {\n            return false;\n        }\n        final WindowedChangelogTopicConfig that = (WindowedChangelogTopicConfig) o;\n        return Objects.equals(name, that.name) &&\n               Objects.equals(topicConfigs, that.topicConfigs) &&\n               Objects.equals(retentionMs, that.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, that.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String toString() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "9740ad186e9ef252b6f9a96917f5ec4fa5c34692fe57bc66c177cec1b68ff60e", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 88, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__WindowedChangelogTopicConfig__e1d0aba6.java", "order": 9, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-5a80e1d0aba6-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 346, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e3429312ca68-I10", "source": "package org.apache.kafka.streams.processor.internals; import org.apache.kafka.common.config.TopicConfig; import java.util.Collections;\nimport java.util.HashMap; import java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static { final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE); WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides); }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String name, final Map<String, String> topicConfigs, final long retentionMs) {\n        super(name, topicConfigs);\n        this.retentionMs = retentionMs;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */ @Override public Map<String, String> properties(final Map<String, String> defaultProperties, final long additionalRetentionMs) {\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> topicConfig = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES); topicConfig.putAll(defaultProperties);\n\n        topicConfig.putAll(topicConfigs); if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long retentionValue;\n            try {\n                retentionValue = Math.addExact(retentionMs, additionalRetentionMs);\n            } catch (final ArithmeticException swallow) {\n                retentionValue = Long.MAX_VALUE;\n            }\n            topicConfig.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionValue));\n        } return topicConfig; } @Override\n    public boolean equals(final Object o) { if (this == o) {\n            return true; } if (o == null || getClass() != o.getClass()) { return false; } final WindowedChangelogTopicConfig that = (WindowedChangelogTopicConfig) o;\n        return Objects.equals(name, that.name) &&\n               Objects.equals(topicConfigs, that.topicConfigs) && Objects.equals(retentionMs, that.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, that.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int hashCode() { return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions); } @Override\n    public String toString() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions + \")\"; }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "7b602743da8878ac174469eb40bc315576d6e12eeb74a909f052943cc7a943d7", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "partially-compact-layout", "level": 10, "line_count": 56, "local_path": "layout/partially-compact-layout/I10__apache-kafka__WindowedChangelogTopicConfig__9312ca68.java", "order": 10, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 63, "line_break_groups_removed": 25, "line_breaks_removed": 30, "whitespace_characters_removed": 168}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-e3429312ca68-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 347, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0bd4a95d73ee-I11", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String name, final Map<String, String> topicConfigs, final long retentionMs) {\n        super(name, topicConfigs);\n        this.retentionMs = retentionMs;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */\n    @Override\n    public Map<String, String> properties(final Map<String, String> defaultProperties, final long additionalRetentionMs) {\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> topicConfig = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        topicConfig.putAll(defaultProperties);\n\n        topicConfig.putAll(topicConfigs);\n\n        if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long retentionValue;\n            try {\n                retentionValue = Math.addExact(retentionMs, additionalRetentionMs);\n            } catch (final ArithmeticException swallow) {\n                retentionValue = Long.MAX_VALUE;\n            }\n            topicConfig.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionValue));\n        }\n\n        return topicConfig;\n    }\n\n    @Override\n    public boolean equals(final Object o) {\n        if (this == o) {\n            return true;\n        }\n        if (o == null || getClass() != o.getClass()) {\n            return false;\n        }\n        final WindowedChangelogTopicConfig that = (WindowedChangelogTopicConfig) o;\n        return Objects.equals(name, that.name) &&\n               Objects.equals(topicConfigs, that.topicConfigs) &&\n               Objects.equals(retentionMs, that.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, that.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String toString() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 86, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__WindowedChangelogTopicConfig__a95d73ee.java", "order": 11, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-0bd4a95d73ee-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 348, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-805ad6eb1044-I12", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String name, final Map<String, String> topicConfigs, final long retentionMs) {\n        super(name, topicConfigs);\n        this.retentionMs = retentionMs;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */\n    @Override\n    public Map<String, String> properties(final Map<String, String> defaultProperties, final long additionalRetentionMs) {\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> topicConfig = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        topicConfig.putAll(defaultProperties);\n\n        topicConfig.putAll(topicConfigs);\n\n        if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long retentionValue;\n            try {\n                retentionValue = Math.addExact(retentionMs, additionalRetentionMs);\n            } catch (final ArithmeticException swallow) {\n                retentionValue = Long.MAX_VALUE;\n            }\n            topicConfig.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionValue));\n        }\n\n        return topicConfig;\n    }\n\n    @Override\n    public boolean equals(final Object o) {\n        if (this == o) {\n            return true;\n        }\n        if (o == null || getClass() != o.getClass()) {\n            return false;\n        }\n        final WindowedChangelogTopicConfig that = (WindowedChangelogTopicConfig) o;\n        return Objects.equals(name, that.name) &&\n               Objects.equals(topicConfigs, that.topicConfigs) &&\n               Objects.equals(retentionMs, that.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, that.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String toString() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 86, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__WindowedChangelogTopicConfig__d6eb1044.java", "order": 12, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-805ad6eb1044-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 349, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-78b62cff08bd-I13", "source": "package org.apache.kafka.streams.processor.internals;\nimport org.apache.kafka.common.config.TopicConfig;\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Objects;\n\n/**\n * WindowedChangelogTopicConfig captures the properties required for configuring\n * the windowed store changelog topics.\n */\npublic class WindowedChangelogTopicConfig extends InternalTopicConfig {\n    private static final Map<String, String> WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES;\n    static {\n        final Map<String, String> tempTopicDefaultOverrides = new HashMap<>(INTERNAL_TOPIC_DEFAULT_OVERRIDES);\n        tempTopicDefaultOverrides.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT + \",\" + TopicConfig.CLEANUP_POLICY_DELETE);\n        WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES = Collections.unmodifiableMap(tempTopicDefaultOverrides);\n    }\n\n    private final long retentionMs;\n\n    WindowedChangelogTopicConfig(final String name, final Map<String, String> topicConfigs, final long retentionMs) {\n        super(name, topicConfigs);\n        this.retentionMs = retentionMs;\n    }\n\n    /**\n     * Get the configured properties for this topic. If no retentionMs override is provided from\n     * the topic configs, then we add additionalRetentionMs to work out the desired retention\n     * when cleanup.policy=compact,delete\n     *\n     * @param additionalRetentionMs - added to retention to allow for clock drift etc\n     * @return Properties to be used when creating the topic\n     */\n    @Override\n    public Map<String, String> properties(final Map<String, String> defaultProperties, final long additionalRetentionMs) {\n        // internal topic config overridden rule: library overrides < global config overrides < per-topic config overrides\n        final Map<String, String> topicConfig = new HashMap<>(WINDOWED_STORE_CHANGELOG_TOPIC_DEFAULT_OVERRIDES);\n\n        topicConfig.putAll(defaultProperties);\n\n        topicConfig.putAll(topicConfigs);\n\n        if (!topicConfigs.containsKey(TopicConfig.RETENTION_MS_CONFIG)) {\n            long retentionValue;\n            try {\n                retentionValue = Math.addExact(retentionMs, additionalRetentionMs);\n            } catch (final ArithmeticException swallow) {\n                retentionValue = Long.MAX_VALUE;\n            }\n            topicConfig.put(TopicConfig.RETENTION_MS_CONFIG, String.valueOf(retentionValue));\n        }\n\n        return topicConfig;\n    }\n\n    @Override\n    public boolean equals(final Object o) {\n        if (this == o) {\n            return true;\n        }\n        if (o == null || getClass() != o.getClass()) {\n            return false;\n        }\n        final WindowedChangelogTopicConfig that = (WindowedChangelogTopicConfig) o;\n        return Objects.equals(name, that.name) &&\n               Objects.equals(topicConfigs, that.topicConfigs) &&\n               Objects.equals(retentionMs, that.retentionMs) &&\n               Objects.equals(enforceNumberOfPartitions, that.enforceNumberOfPartitions);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(name, topicConfigs, retentionMs, enforceNumberOfPartitions);\n    }\n\n    @Override\n    public String toString() {\n        return \"WindowedChangelogTopicConfig(\" +\n                \"name=\" + name +\n                \", topicConfigs=\" + topicConfigs +\n                \", retentionMs=\" + retentionMs +\n                \", enforceNumberOfPartitions=\" + enforceNumberOfPartitions +\n                \")\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__WindowedChangelogTopicConfig__3e532a75.java", "base_sample_id": "source-2dd11ed08406f108", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java", "interference": "lower-for-to-while", "level": 13, "line_count": 86, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__WindowedChangelogTopicConfig__2cff08bd.java", "order": 13, "original_content_sha256": "3dbd556662ab9059bc93b7f175ccd9f6691b5d024442758d0816dd53a7e48116", "parent_variant_id": "int-4a063e532a75-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/processor/internals/WindowedChangelogTopicConfig.java#L26-L104", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "WindowedChangelogTopicConfig", "variant_id": "int-78b62cff08bd-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 350, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b9224eb2e413-SRC", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String name,\n                                         final String metricsScope) {\n        super(name,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(name, metricsScope, Long.MAX_VALUE, Long.MAX_VALUE));\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> getIndexKeyValue(final Bytes baseKey, final byte[] baseValue) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> getWriteBatches(final Collection<ConsumerRecord<byte[], byte[]>> records) {\n        return getWriteBatches(\n            records,\n            WindowKeySchema::extractStoreTimestamp,\n            null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator getIndexToBaseStoreIterator(final SegmentIterator<KeyValueSegment> segmentIterator,\n                                                                   final IsolationLevel isolationLevel) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": null, "level": 0, "line_count": 47, "local_path": "source-original/SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "order": 0, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-b9224eb2e413-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 253, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-14f97d7e93b4-I01", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n\n\n\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String name,\n                                         final String metricsScope) {\n        super(name,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(name, metricsScope, Long.MAX_VALUE, Long.MAX_VALUE));\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> getIndexKeyValue(final Bytes baseKey, final byte[] baseValue) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> getWriteBatches(final Collection<ConsumerRecord<byte[], byte[]>> records) {\n        return getWriteBatches(\n            records,\n            WindowKeySchema::extractStoreTimestamp,\n            null,  \n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator getIndexToBaseStoreIterator(final SegmentIterator<KeyValueSegment> segmentIterator,\n                                                                   final IsolationLevel isolationLevel) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "421fda47333be5bddd61a511739f7616d3de27d26eb16a8acbc9463691594195", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "remove-comments", "level": 1, "line_count": 47, "local_path": "comments/remove-comments/I01__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__7d7e93b4.java", "order": 1, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 121, "comments_removed": 2}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-14f97d7e93b4-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 254, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d9bd18cd9767-I02", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String nam,\n                                         final String metrics) {\n        super(nam,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(nam, metrics, Long.MAX_VALUE, Long.MAX_VALUE));\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> get(final Bytes base, final byte[] base2) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> get2(final Collection<ConsumerRecord<byte[], byte[]>> rec) {\n        return get2(\n            rec,\n            WindowKeySchema::extractStoreTimestamp,\n            null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator get3(final SegmentIterator<KeyValueSegment> segment,\n                                                                   final IsolationLevel isolation) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "46235a389a614c73a454de564b0b6a07f148fc764d205692cbdb335bfcd5b956", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "shorten-identifiers", "level": 2, "line_count": 47, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__18cd9767.java", "order": 2, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 7, "local_name_collisions_avoided": 1, "method_calls_renamed": 1, "method_declarations_renamed": 3, "method_name_collisions_avoided": 2, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-d9bd18cd9767-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 255, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-61eb3c7c6a06-I03", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String flag,\n                                         final String cachedConfig) {\n        super(flag,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(flag, cachedConfig, Long.MAX_VALUE, Long.MAX_VALUE));\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> validateAddress(final Bytes message, final byte[] finalUser) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> validateRequest(final Collection<ConsumerRecord<byte[], byte[]>> session) {\n        return validateRequest(\n            session,\n            WindowKeySchema::extractStoreTimestamp,\n            null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator validateBalance(final SegmentIterator<KeyValueSegment> primaryAddress,\n                                                                   final IsolationLevel primaryRequest) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7595c2de9f7da87a83d106ee0bd8a2193d559eddd46a426e0f54d9b508184685", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "mislead-identifiers", "level": 3, "line_count": 47, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__3c7c6a06.java", "order": 3, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 7, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 6, "local_random_pool_selections": 7, "local_total_length_difference": 1, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 1, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 2, "method_declarations_renamed": 3, "method_exact_length_matches": 1, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 13}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-61eb3c7c6a06-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 256, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8e80c8373853-I04", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String a,\n                                         final String b) {\n        super(a,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(a, b, Long.MAX_VALUE, Long.MAX_VALUE));\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> a(final Bytes c, final byte[] d) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> b(final Collection<ConsumerRecord<byte[], byte[]>> e) {\n        return b(\n            e,\n            WindowKeySchema::extractStoreTimestamp,\n            null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator c(final SegmentIterator<KeyValueSegment> f,\n                                                                   final IsolationLevel g) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "f20513adb8b78d0a5d0dde3eaf1de7b0c30389cfb2a92d9122a06774b809c33a", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "garble-identifiers", "level": 4, "line_count": 47, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__c8373853.java", "order": 4, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 7, "local_name_collisions_avoided": 0, "method_calls_renamed": 1, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-8e80c8373853-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 257, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7a207a667ba8-I05", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String name,\n                                         final String metricsScope) {\n        super(name,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(name, metricsScope, Long.MAX_VALUE, Long.MAX_VALUE));\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> getIndexKeyValue(final Bytes baseKey, final byte[] baseValue) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> getWriteBatches(final Collection<ConsumerRecord<byte[], byte[]>> records) {\n        return getWriteBatches(\n            records,\n            WindowKeySchema::extractStoreTimestamp,\n            null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator getIndexToBaseStoreIterator(final SegmentIterator<KeyValueSegment> segmentIterator,\n                                                                   final IsolationLevel isolationLevel) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "encode-integer-literals", "level": 5, "line_count": 47, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__7a667ba8.java", "order": 5, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-7a207a667ba8-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 258, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fe5c24ef1102-I06", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String name,\n                                         final String metricsScope) {\n        super(name,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(name, metricsScope, Long.MAX_VALUE, Long.MAX_VALUE));\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> getIndexKeyValue(final Bytes baseKey, final byte[] baseValue) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> getWriteBatches(final Collection<ConsumerRecord<byte[], byte[]>> records) {\n        return getWriteBatches(\n            records,\n            WindowKeySchema::extractStoreTimestamp,\n            null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator getIndexToBaseStoreIterator(final SegmentIterator<KeyValueSegment> segmentIterator,\n                                                                   final IsolationLevel isolationLevel) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "invert-conditions", "level": 6, "line_count": 47, "local_path": "expressions/invert-conditions/I06__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__24ef1102.java", "order": 6, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-fe5c24ef1102-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 259, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c2da9f952a86-I07", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String name,\n                                         final String metricsScope) {\n        super(name,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(name, metricsScope, Long.MAX_VALUE, Long.MAX_VALUE));\nif (((0x24AF ^ 0x24AF) != 0)) { throw new AssertionError(); }\n\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> getIndexKeyValue(final Bytes baseKey, final byte[] baseValue) {\nif (((0xFD8 ^ 0xFD8) != 0)) { throw new AssertionError(); }\n\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> getWriteBatches(final Collection<ConsumerRecord<byte[], byte[]>> records) {\nif (((0xA22 ^ 0xA22) != 0)) { throw new AssertionError(); }\n\n        return getWriteBatches(\n            records,\n            WindowKeySchema::extractStoreTimestamp,\n            null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator getIndexToBaseStoreIterator(final SegmentIterator<KeyValueSegment> segmentIterator,\n                                                                   final IsolationLevel isolationLevel) {\nif (((0xEE1C ^ 0xEE1C) != 0)) { throw new AssertionError(); }\n\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b2a8f19d70da50225e448eaf17d655232cef46964fd993d1ae8a6ff062175442", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "insert-dead-branches", "level": 7, "line_count": 55, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__9f952a86.java", "order": 7, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-c2da9f952a86-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 260, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c7051926d937-I08", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String name,\n                                         final String metricsScope) {\n        super(name,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(name, metricsScope, Long.MAX_VALUE, Long.MAX_VALUE));\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> getIndexKeyValue(final Bytes baseKey, final byte[] baseValue) {\n{\n  int firstScore = 72;\n  int secondScore = 85;\n  int higherScore;\n  if (firstScore > secondScore) {\n    higherScore = firstScore;\n  } else {\n    higherScore = secondScore;\n  }\n}\n\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> getWriteBatches(final Collection<ConsumerRecord<byte[], byte[]>> records) {\n        return getWriteBatches(\n            records,\n            WindowKeySchema::extractStoreTimestamp,\n            null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator getIndexToBaseStoreIterator(final SegmentIterator<KeyValueSegment> segmentIterator,\n                                                                   final IsolationLevel isolationLevel) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b0491301d954cc7e715de223114ed3ff03f384ba60c1e6e6cf1236fed0bb5bff", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 58, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__1926d937.java", "order": 8, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 10, "readable_template_index": 3}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-c7051926d937-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 261, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-90e3a400151f-I09", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String name,\n                                         final String metricsScope) {\n        super(name,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(name, metricsScope, Long.MAX_VALUE, Long.MAX_VALUE));\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> getIndexKeyValue(final Bytes baseKey, final byte[] baseValue) {\n{int lI0O_1a4e9f29=0x89EF^0x89EF;if(lI0O_1a4e9f29!=0){if(((lI0O_1a4e9f29|1)&1)==0){lI0O_1a4e9f29++;}else{lI0O_1a4e9f29--;}}}\n\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> getWriteBatches(final Collection<ConsumerRecord<byte[], byte[]>> records) {\n        return getWriteBatches(\n            records,\n            WindowKeySchema::extractStoreTimestamp,\n            null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator getIndexToBaseStoreIterator(final SegmentIterator<KeyValueSegment> segmentIterator,\n                                                                   final IsolationLevel isolationLevel) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d36ea01ae3ecf5aa7ed9e289448fdc20b6488c3a8c9dc2b4f1367d9c34774535", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 49, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__a400151f.java", "order": 9, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 5}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-90e3a400151f-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 262, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e1a5c93e8959-I10", "source": "package org.apache.kafka.streams.state.internals; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue; import org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema; import org.rocksdb.WriteBatch; import java.util.Collection;\nimport java.util.Map; import java.util.Optional; /**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String name,\n                                         final String metricsScope) {\n        super(name,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(), new KeyValueSegments(name, metricsScope, Long.MAX_VALUE, Long.MAX_VALUE));\n    } @Override\n    protected KeyValue<Bytes, byte[]> getIndexKeyValue(final Bytes baseKey, final byte[] baseValue) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override Map<KeyValueSegment, WriteBatch> getWriteBatches(final Collection<ConsumerRecord<byte[], byte[]>> records) { return getWriteBatches(\n            records,\n            WindowKeySchema::extractStoreTimestamp, null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey );\n    }\n\n    @Override protected IndexToBaseStoreIterator getIndexToBaseStoreIterator(final SegmentIterator<KeyValueSegment> segmentIterator,\n                                                                   final IsolationLevel isolationLevel) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "b7b7a4364942ad192d7dbbb0536945b8f6ffa43507d1d78cd85040f3e7898e8e", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "partially-compact-layout", "level": 10, "line_count": 31, "local_path": "layout/partially-compact-layout/I10__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__c93e8959.java", "order": 10, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 37, "line_break_groups_removed": 14, "line_breaks_removed": 16, "whitespace_characters_removed": 54}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-e1a5c93e8959-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 263, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4c2481c7a018-I11", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String name,\n                                         final String metricsScope) {\n        super(name,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(name, metricsScope, Long.MAX_VALUE, Long.MAX_VALUE));\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> getIndexKeyValue(final Bytes baseKey, final byte[] baseValue) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> getWriteBatches(final Collection<ConsumerRecord<byte[], byte[]>> records) {\n        return getWriteBatches(\n            records,\n            WindowKeySchema::extractStoreTimestamp,\n            null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator getIndexToBaseStoreIterator(final SegmentIterator<KeyValueSegment> segmentIterator,\n                                                                   final IsolationLevel isolationLevel) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 47, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__81c7a018.java", "order": 11, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-4c2481c7a018-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 264, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6e157b5c887a-I12", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String name,\n                                         final String metricsScope) {\n        super(name,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(name, metricsScope, Long.MAX_VALUE, Long.MAX_VALUE));\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> getIndexKeyValue(final Bytes baseKey, final byte[] baseValue) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> getWriteBatches(final Collection<ConsumerRecord<byte[], byte[]>> records) {\n        return getWriteBatches(\n            records,\n            WindowKeySchema::extractStoreTimestamp,\n            null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator getIndexToBaseStoreIterator(final SegmentIterator<KeyValueSegment> segmentIterator,\n                                                                   final IsolationLevel isolationLevel) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 47, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__7b5c887a.java", "order": 12, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-6e157b5c887a-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 265, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-86cd6a4770de-I13", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.clients.consumer.ConsumerRecord;\nimport org.apache.kafka.common.IsolationLevel;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.state.internals.PrefixedWindowKeySchemas.TimeFirstWindowKeySchema;\nimport org.rocksdb.WriteBatch;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.Optional;\n\n/**\n * A RocksDB backed time-ordered segmented bytes store for window key schema.\n */\npublic class RocksDBTimeOrderedKeyValueBytesStore extends AbstractRocksDBTimeOrderedSegmentedBytesStore<KeyValueSegment> {\n\n    RocksDBTimeOrderedKeyValueBytesStore(final String name,\n                                         final String metricsScope) {\n        super(name,\n            Long.MAX_VALUE,\n            new TimeFirstWindowKeySchema(),\n            Optional.empty(),\n            new KeyValueSegments(name, metricsScope, Long.MAX_VALUE, Long.MAX_VALUE));\n    }\n\n    @Override\n    protected KeyValue<Bytes, byte[]> getIndexKeyValue(final Bytes baseKey, final byte[] baseValue) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n    @Override\n    Map<KeyValueSegment, WriteBatch> getWriteBatches(final Collection<ConsumerRecord<byte[], byte[]>> records) {\n        return getWriteBatches(\n            records,\n            WindowKeySchema::extractStoreTimestamp,\n            null, // never an indexed store -- not needed\n            TimeFirstWindowKeySchema::fromNonPrefixWindowKey\n        );\n    }\n\n    @Override\n    protected IndexToBaseStoreIterator getIndexToBaseStoreIterator(final SegmentIterator<KeyValueSegment> segmentIterator,\n                                                                   final IsolationLevel isolationLevel) {\n        throw new UnsupportedOperationException(\"Do not use for TimeOrderedKeyValueStore\");\n    }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__4eb2e413.java", "base_sample_id": "source-855363384a3795db", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java", "interference": "lower-for-to-while", "level": 13, "line_count": 47, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__RocksDBTimeOrderedKeyValueBytesStore__6a4770de.java", "order": 13, "original_content_sha256": "04827f739bce811d8304de1500f9acfc156c88739446752ea1b968794e684443", "parent_variant_id": "int-b9224eb2e413-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/RocksDBTimeOrderedKeyValueBytesStore.java#L31-L66", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "RocksDBTimeOrderedKeyValueBytesStore", "variant_id": "int-86cd6a4770de-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 266, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-571214221089-SRC", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator) {\n        this.innerIterator = innerIterator;\n    }\n\n    @Override\n    public void close() {\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> peekNextKey() {\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean hasNext() {\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> next() {\n        final KeyValue<Windowed<Bytes>, byte[]> keyValue = innerIterator.next();\n        if (keyValue == null) {\n            return null;\n        }\n        return KeyValue.pair(keyValue.key, convertToHeaderFormat(keyValue.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": null, "level": 0, "line_count": 49, "local_path": "source-original/SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "order": 0, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-571214221089-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 267, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6e0ffec04206-I01", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n\n\n\n\n\n\n\n\n\n\n\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator) {\n        this.innerIterator = innerIterator;\n    }\n\n    @Override\n    public void close() {\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> peekNextKey() {\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean hasNext() {\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> next() {\n        final KeyValue<Windowed<Bytes>, byte[]> keyValue = innerIterator.next();\n        if (keyValue == null) {\n            return null;\n        }\n        return KeyValue.pair(keyValue.key, convertToHeaderFormat(keyValue.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "5dbe1e93fe7dbfc043783bcc41470c20e03a66d0ad00fc08f002036aa4ab8280", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "remove-comments", "level": 1, "line_count": 49, "local_path": "comments/remove-comments/I01__apache-kafka__SessionToHeadersIteratorAdapter__fec04206.java", "order": 1, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 423, "comments_removed": 1}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-6e0ffec04206-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 268, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3ea4421a63c9-I02", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> inner) {\n        this.innerIterator = inner;\n    }\n\n    @Override\n    public void clo() {\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> peek() {\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean has() {\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> nex() {\n        final KeyValue<Windowed<Bytes>, byte[]> key2 = innerIterator.next();\n        if (key2 == null) {\n            return null;\n        }\n        return KeyValue.pair(key2.key, convertToHeaderFormat(key2.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "929695391e11c11af1ecf42e3de8ae01b643ab48a74a40567d41ec0920fa515c", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "shorten-identifiers", "level": 2, "line_count": 49, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__SessionToHeadersIteratorAdapter__421a63c9.java", "order": 2, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 2, "local_name_collisions_avoided": 1, "method_calls_renamed": 0, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-3ea4421a63c9-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 269, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-44646c269b6d-I03", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> cachedSession) {\n        this.innerIterator = cachedSession;\n    }\n\n    @Override\n    public void audit() {\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> updateIndex() {\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean findKey() {\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> read() {\n        final KeyValue<Windowed<Bytes>, byte[]> response = innerIterator.next();\n        if (response == null) {\n            return null;\n        }\n        return KeyValue.pair(response.key, convertToHeaderFormat(response.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b7d6e53aba2bbdf88ee0efbb5fb3bb9b4e07ede937d9ddc41cb85d0260a79381", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "mislead-identifiers", "level": 3, "line_count": 49, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__SessionToHeadersIteratorAdapter__6c269b6d.java", "order": 3, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 2, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 2, "local_random_pool_selections": 2, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 4, "method_name_groups": 4, "method_random_pool_selections": 4, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-44646c269b6d-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 270, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-291dd89e6553-I04", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> a) {\n        this.innerIterator = a;\n    }\n\n    @Override\n    public void a() {\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> b() {\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean c() {\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> d() {\n        final KeyValue<Windowed<Bytes>, byte[]> b = innerIterator.next();\n        if (b == null) {\n            return null;\n        }\n        return KeyValue.pair(b.key, convertToHeaderFormat(b.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "2f960a63de07b0f4ea41256120077ba6abbff02654c6f130d5585f10e15f44b2", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "garble-identifiers", "level": 4, "line_count": 49, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__SessionToHeadersIteratorAdapter__d89e6553.java", "order": 4, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 2, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-291dd89e6553-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 271, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-063d566ade1a-I05", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator) {\n        this.innerIterator = innerIterator;\n    }\n\n    @Override\n    public void close() {\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> peekNextKey() {\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean hasNext() {\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> next() {\n        final KeyValue<Windowed<Bytes>, byte[]> keyValue = innerIterator.next();\n        if (keyValue == null) {\n            return null;\n        }\n        return KeyValue.pair(keyValue.key, convertToHeaderFormat(keyValue.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "encode-integer-literals", "level": 5, "line_count": 49, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__SessionToHeadersIteratorAdapter__566ade1a.java", "order": 5, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-063d566ade1a-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 272, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c7fc104045ff-I06", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator) {\n        this.innerIterator = innerIterator;\n    }\n\n    @Override\n    public void close() {\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> peekNextKey() {\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean hasNext() {\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> next() {\n        final KeyValue<Windowed<Bytes>, byte[]> keyValue = innerIterator.next();\n        if (!((keyValue == null))) {} else {\n            return null;\n        }\n        return KeyValue.pair(keyValue.key, convertToHeaderFormat(keyValue.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "65a64218668c2c8b324a4e2035d4b1c39530ec1d2f5bedba9fac8ef96d48042c", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "invert-conditions", "level": 6, "line_count": 49, "local_path": "expressions/invert-conditions/I06__apache-kafka__SessionToHeadersIteratorAdapter__104045ff.java", "order": 6, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-c7fc104045ff-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 273, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f84d36b2bf24-I07", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator) {\nif (((0x8B16 ^ 0x8B16) != 0)) { throw new AssertionError(); }\n\n        this.innerIterator = innerIterator;\n    }\n\n    @Override\n    public void close() {\nif (((0x3AF4 ^ 0x3AF4) != 0)) { throw new AssertionError(); }\n\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> peekNextKey() {\nif (((0xE590 ^ 0xE590) != 0)) { throw new AssertionError(); }\n\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean hasNext() {\nif (((0xEC15 ^ 0xEC15) != 0)) { throw new AssertionError(); }\n\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> next() {\nif (((0xD46 ^ 0xD46) != 0)) { throw new AssertionError(); }\n\n        final KeyValue<Windowed<Bytes>, byte[]> keyValue = innerIterator.next();\n        if (keyValue == null) {\n            return null;\n        }\n        return KeyValue.pair(keyValue.key, convertToHeaderFormat(keyValue.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "20387eebe871b577d311877ac387db6dee089493298add8081d227d9a3c3e148", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "insert-dead-branches", "level": 7, "line_count": 59, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__SessionToHeadersIteratorAdapter__36b2bf24.java", "order": 7, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 5}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-f84d36b2bf24-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 274, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-29946d2d2e3d-I08", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator) {\n        this.innerIterator = innerIterator;\n    }\n\n    @Override\n    public void close() {\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> peekNextKey() {\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean hasNext() {\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> next() {\n{\n  int firstScore = 72;\n  int secondScore = 85;\n  int higherScore;\n  if (firstScore > secondScore) {\n    higherScore = firstScore;\n  } else {\n    higherScore = secondScore;\n  }\n}\n\n        final KeyValue<Windowed<Bytes>, byte[]> keyValue = innerIterator.next();\n        if (keyValue == null) {\n            return null;\n        }\n        return KeyValue.pair(keyValue.key, convertToHeaderFormat(keyValue.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "6f82e7743c8851b4666489483aee3cc9abc27c8b344cc561c24034bdb583793a", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 60, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__SessionToHeadersIteratorAdapter__6d2d2e3d.java", "order": 8, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 10, "readable_template_index": 3}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-29946d2d2e3d-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 275, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cc637013ca5a-I09", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator) {\n        this.innerIterator = innerIterator;\n    }\n\n    @Override\n    public void close() {\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> peekNextKey() {\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean hasNext() {\n{int lI0O_3e2ff27b=0xD4AC-0xD4AC;lI0O_3e2ff27b=(lI0O_3e2ff27b==0)?(lI0O_3e2ff27b|0):(lI0O_3e2ff27b&0);}\n\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> next() {\n        final KeyValue<Windowed<Bytes>, byte[]> keyValue = innerIterator.next();\n        if (keyValue == null) {\n            return null;\n        }\n        return KeyValue.pair(keyValue.key, convertToHeaderFormat(keyValue.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b26758e96fe54064668770bae2cee27c60dd9781ee9f38087f972b9fbeb4735d", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 51, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__SessionToHeadersIteratorAdapter__7013ca5a.java", "order": 9, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 1}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-cc637013ca5a-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 276, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a20b4428a1ff-I10", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator; import static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator; SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator) { this.innerIterator = innerIterator;\n    } @Override public void close() { innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> peekNextKey() {\n        return innerIterator.peekNextKey(); } @Override\n    public boolean hasNext() { return innerIterator.hasNext();\n    } @Override public KeyValue<Windowed<Bytes>, byte[]> next() {\n        final KeyValue<Windowed<Bytes>, byte[]> keyValue = innerIterator.next();\n        if (keyValue == null) {\n            return null;\n        }\n        return KeyValue.pair(keyValue.key, convertToHeaderFormat(keyValue.value));\n    } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "5e41c98d217a24a2d127f01d825bf9dc5b9b91b027bfeb46ab2a8bdf44affa36", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "partially-compact-layout", "level": 10, "line_count": 33, "local_path": "layout/partially-compact-layout/I10__apache-kafka__SessionToHeadersIteratorAdapter__4428a1ff.java", "order": 10, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 32, "line_break_groups_removed": 12, "line_breaks_removed": 16, "whitespace_characters_removed": 56}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-a20b4428a1ff-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 277, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-218a3b6a2773-I11", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator) {\n        this.innerIterator = innerIterator;\n    }\n\n    @Override\n    public void close() {\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> peekNextKey() {\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean hasNext() {\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> next() {\n        final KeyValue<Windowed<Bytes>, byte[]> keyValue = innerIterator.next();\n        if (keyValue == null) {\n            return null;\n        }\n        return KeyValue.pair(keyValue.key, convertToHeaderFormat(keyValue.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 49, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__SessionToHeadersIteratorAdapter__3b6a2773.java", "order": 11, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-218a3b6a2773-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 278, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a3038fed44be-I12", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator) {\n        this.innerIterator = innerIterator;\n    }\n\n    @Override\n    public void close() {\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> peekNextKey() {\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean hasNext() {\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> next() {\n        final KeyValue<Windowed<Bytes>, byte[]> keyValue = innerIterator.next();\n        if (keyValue == null) {\n            return null;\n        }\n        return KeyValue.pair(keyValue.key, convertToHeaderFormat(keyValue.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 49, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__SessionToHeadersIteratorAdapter__8fed44be.java", "order": 12, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-a3038fed44be-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 279, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-49110c400382-I13", "source": "package org.apache.kafka.streams.state.internals;\nimport org.apache.kafka.common.utils.Bytes;\nimport org.apache.kafka.streams.KeyValue;\nimport org.apache.kafka.streams.kstream.Windowed;\nimport org.apache.kafka.streams.state.KeyValueIterator;\nimport static org.apache.kafka.streams.state.HeadersBytesStore.convertToHeaderFormat;\n\n/**\n * This class is used to ensure backward compatibility at DSL level between\n * {@link org.apache.kafka.streams.state.SessionStoreWithHeaders} and\n * {@link org.apache.kafka.streams.state.SessionStore}.\n * <p>\n * When iterating over session entries from a store that contains only values,\n * this adapter adds the headers prefix so the caller receives aggregation bytes\n * with headers.\n *\n * @see SessionToHeadersStoreAdapter\n */\nclass SessionToHeadersIteratorAdapter implements KeyValueIterator<Windowed<Bytes>, byte[]> {\n    private final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator;\n\n    SessionToHeadersIteratorAdapter(final KeyValueIterator<Windowed<Bytes>, byte[]> innerIterator) {\n        this.innerIterator = innerIterator;\n    }\n\n    @Override\n    public void close() {\n        innerIterator.close();\n    }\n\n    @Override\n    public Windowed<Bytes> peekNextKey() {\n        return innerIterator.peekNextKey();\n    }\n\n    @Override\n    public boolean hasNext() {\n        return innerIterator.hasNext();\n    }\n\n    @Override\n    public KeyValue<Windowed<Bytes>, byte[]> next() {\n        final KeyValue<Windowed<Bytes>, byte[]> keyValue = innerIterator.next();\n        if (keyValue == null) {\n            return null;\n        }\n        return KeyValue.pair(keyValue.key, convertToHeaderFormat(keyValue.value));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__SessionToHeadersIteratorAdapter__14221089.java", "base_sample_id": "source-6dbc43cc69843c2a", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java", "interference": "lower-for-to-while", "level": 13, "line_count": 49, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__SessionToHeadersIteratorAdapter__0c400382.java", "order": 13, "original_content_sha256": "3b53b1d7148172f4db5bd8a9895b05f3b59519d909114d5baccd08cc71c0d97c", "parent_variant_id": "int-571214221089-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "streams/src/main/java/org/apache/kafka/streams/state/internals/SessionToHeadersIteratorAdapter.java#L26-L67", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "SessionToHeadersIteratorAdapter", "variant_id": "int-49110c400382-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 280, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bd550e2e6d2e-SRC", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String name) {\n        this.name = name;\n    }\n\n    @Override\n    public synchronized RuntimeException handleFault(String failureMessage, Throwable cause) {\n        if (cause == null) {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage, cause);\n        }\n        FaultHandlerException e = (cause == null) ?\n                new FaultHandlerException(name + \": \" + failureMessage) :\n                new FaultHandlerException(name + \": \" + failureMessage +\n                        \": \" + cause.getMessage(), cause);\n        if (firstException == null) {\n            firstException = e;\n        }\n        return firstException;\n    }\n\n    public synchronized void maybeRethrowFirstException() {\n        if (firstException != null && !ignore) {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException firstException() {\n        return firstException;\n    }\n\n    public synchronized void setIgnore(boolean ignore) {\n        this.ignore = ignore;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": null, "level": 0, "line_count": 52, "local_path": "source-original/SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "order": 0, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": null, "readability_direction": "baseline", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-bd550e2e6d2e-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 197, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cf7877dc688a-I01", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n\n\n\n\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String name) {\n        this.name = name;\n    }\n\n    @Override\n    public synchronized RuntimeException handleFault(String failureMessage, Throwable cause) {\n        if (cause == null) {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage, cause);\n        }\n        FaultHandlerException e = (cause == null) ?\n                new FaultHandlerException(name + \": \" + failureMessage) :\n                new FaultHandlerException(name + \": \" + failureMessage +\n                        \": \" + cause.getMessage(), cause);\n        if (firstException == null) {\n            firstException = e;\n        }\n        return firstException;\n    }\n\n    public synchronized void maybeRethrowFirstException() {\n        if (firstException != null && !ignore) {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException firstException() {\n        return firstException;\n    }\n\n    public synchronized void setIgnore(boolean ignore) {\n        this.ignore = ignore;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "00ad0400be520bc65406d5f0c52433dafabbf7deca8218db71f93e982d272479", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "remove-comments", "level": 1, "line_count": 52, "local_path": "comments/remove-comments/I01__apache-kafka__MockFaultHandler__77dc688a.java", "order": 1, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 140, "comments_removed": 1}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-cf7877dc688a-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 198, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-08c3795b452c-I02", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String nam) {\n        this.name = nam;\n    }\n\n    @Override\n    public synchronized RuntimeException handle(String failure, Throwable cau) {\n        if (cau == null) {\n            log.error(\"Encountered {} fault: {}\", name, failure);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, failure, cau);\n        }\n        FaultHandlerException e = (cau == null) ?\n                new FaultHandlerException(name + \": \" + failure) :\n                new FaultHandlerException(name + \": \" + failure +\n                        \": \" + cau.getMessage(), cau);\n        if (firstException == null) {\n            firstException = e;\n        }\n        return firstException;\n    }\n\n    public synchronized void maybe() {\n        if (firstException != null && !ignore) {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException first() {\n        return firstException;\n    }\n\n    public synchronized void set(boolean ign) {\n        this.ignore = ign;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "567d1262a3f10245296186db4900df104a2e6a5a29383ca8cf679c23e6c06493", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "shorten-identifiers", "level": 2, "line_count": 52, "local_path": "identifiers/shorten-identifiers/I02__apache-kafka__MockFaultHandler__795b452c.java", "order": 2, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 12, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-08c3795b452c-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 199, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a540b2ffbac2-I03", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String user) {\n        this.name = user;\n    }\n\n    @Override\n    public synchronized RuntimeException refreshUser(String pendingMessage, Throwable event) {\n        if (event == null) {\n            log.error(\"Encountered {} fault: {}\", name, pendingMessage);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, pendingMessage, event);\n        }\n        FaultHandlerException age = (event == null) ?\n                new FaultHandlerException(name + \": \" + pendingMessage) :\n                new FaultHandlerException(name + \": \" + pendingMessage +\n                        \": \" + event.getMessage(), event);\n        if (firstException == null) {\n            firstException = age;\n        }\n        return firstException;\n    }\n\n    public synchronized void validateRequest() {\n        if (firstException != null && !ignore) {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException refreshRequest() {\n        return firstException;\n    }\n\n    public synchronized void sendToken(boolean result) {\n        this.ignore = result;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "944437f43e002adbe99a9468581b37738d9c66f2f9efa29788238a2e59bb41c7", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "mislead-identifiers", "level": 3, "line_count": 52, "local_path": "identifiers/mislead-identifiers/I03__apache-kafka__MockFaultHandler__b2ffbac2.java", "order": 3, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 12, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 4, "local_random_pool_selections": 5, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 3, "method_name_groups": 4, "method_random_pool_selections": 4, "method_total_length_difference": 11}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-a540b2ffbac2-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 200, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3b48f93611c0-I04", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String a) {\n        this.name = a;\n    }\n\n    @Override\n    public synchronized RuntimeException a(String b, Throwable c) {\n        if (c == null) {\n            log.error(\"Encountered {} fault: {}\", name, b);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, b, c);\n        }\n        FaultHandlerException d = (c == null) ?\n                new FaultHandlerException(name + \": \" + b) :\n                new FaultHandlerException(name + \": \" + b +\n                        \": \" + c.getMessage(), c);\n        if (firstException == null) {\n            firstException = d;\n        }\n        return firstException;\n    }\n\n    public synchronized void b() {\n        if (firstException != null && !ignore) {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException c() {\n        return firstException;\n    }\n\n    public synchronized void d(boolean e) {\n        this.ignore = e;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "337cb2cfd3ec3c538d5b821a3d2a0f6c69d408acce878fb02c3e4a5f13fc4639", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "garble-identifiers", "level": 4, "line_count": 52, "local_path": "identifiers/garble-identifiers/I04__apache-kafka__MockFaultHandler__f93611c0.java", "order": 4, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 12, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-3b48f93611c0-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 201, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e1a3f5732cf5-I05", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String name) {\n        this.name = name;\n    }\n\n    @Override\n    public synchronized RuntimeException handleFault(String failureMessage, Throwable cause) {\n        if (cause == null) {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage, cause);\n        }\n        FaultHandlerException e = (cause == null) ?\n                new FaultHandlerException(name + \": \" + failureMessage) :\n                new FaultHandlerException(name + \": \" + failureMessage +\n                        \": \" + cause.getMessage(), cause);\n        if (firstException == null) {\n            firstException = e;\n        }\n        return firstException;\n    }\n\n    public synchronized void maybeRethrowFirstException() {\n        if (firstException != null && !ignore) {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException firstException() {\n        return firstException;\n    }\n\n    public synchronized void setIgnore(boolean ignore) {\n        this.ignore = ignore;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "encode-integer-literals", "level": 5, "line_count": 52, "local_path": "expressions/encode-integer-literals/I05__apache-kafka__MockFaultHandler__f5732cf5.java", "order": 5, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-e1a3f5732cf5-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 202, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-becc504c6cd2-I06", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String name) {\n        this.name = name;\n    }\n\n    @Override\n    public synchronized RuntimeException handleFault(String failureMessage, Throwable cause) {\n        if (!((cause == null))) {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage, cause);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage);\n        }\n        FaultHandlerException e = (cause == null) ?\n                new FaultHandlerException(name + \": \" + failureMessage) :\n                new FaultHandlerException(name + \": \" + failureMessage +\n                        \": \" + cause.getMessage(), cause);\n        if (!((firstException == null))) {} else {\n            firstException = e;\n        }\n        return firstException;\n    }\n\n    public synchronized void maybeRethrowFirstException() {\n        if (!((firstException != null && !ignore))) {} else {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException firstException() {\n        return firstException;\n    }\n\n    public synchronized void setIgnore(boolean ignore) {\n        this.ignore = ignore;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "8f8e33e794438a7b1dfacfcc52022950d80a0cee5493b83073f0e74f65e31571", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "invert-conditions", "level": 6, "line_count": 52, "local_path": "expressions/invert-conditions/I06__apache-kafka__MockFaultHandler__504c6cd2.java", "order": 6, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 3}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-becc504c6cd2-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 203, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9fa46427be6d-I07", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String name) {\nif (((0x2D4B ^ 0x2D4B) != 0)) { throw new AssertionError(); }\n\n        this.name = name;\n    }\n\n    @Override\n    public synchronized RuntimeException handleFault(String failureMessage, Throwable cause) {\nif (((0xA142 ^ 0xA142) != 0)) { throw new AssertionError(); }\n\n        if (cause == null) {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage, cause);\n        }\n        FaultHandlerException e = (cause == null) ?\n                new FaultHandlerException(name + \": \" + failureMessage) :\n                new FaultHandlerException(name + \": \" + failureMessage +\n                        \": \" + cause.getMessage(), cause);\n        if (firstException == null) {\n            firstException = e;\n        }\n        return firstException;\n    }\n\n    public synchronized void maybeRethrowFirstException() {\nif (((0x8A1A ^ 0x8A1A) != 0)) { throw new AssertionError(); }\n\n        if (firstException != null && !ignore) {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException firstException() {\nif (((0xAA52 ^ 0xAA52) != 0)) { throw new AssertionError(); }\n\n        return firstException;\n    }\n\n    public synchronized void setIgnore(boolean ignore) {\nif (((0xB8 ^ 0xB8) != 0)) { throw new AssertionError(); }\n\n        this.ignore = ignore;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "fa586dd0011765cd3692e19108575f8dc5e21dd41509f31cef1cd6d2ba37e1d0", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "insert-dead-branches", "level": 7, "line_count": 62, "local_path": "code-injection/insert-dead-branches/I07__apache-kafka__MockFaultHandler__6427be6d.java", "order": 7, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 5}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-9fa46427be6d-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 204, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-37c188cbc8b1-I08", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String name) {\n        this.name = name;\n    }\n\n    @Override\n    public synchronized RuntimeException handleFault(String failureMessage, Throwable cause) {\n        if (cause == null) {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage, cause);\n        }\n        FaultHandlerException e = (cause == null) ?\n                new FaultHandlerException(name + \": \" + failureMessage) :\n                new FaultHandlerException(name + \": \" + failureMessage +\n                        \": \" + cause.getMessage(), cause);\n        if (firstException == null) {\n            firstException = e;\n        }\n        return firstException;\n    }\n\n    public synchronized void maybeRethrowFirstException() {\n{\n  int evenNumberCount = 0;\n  for (int candidateNumber = 0; candidateNumber < 6; candidateNumber++) {\n    if (candidateNumber % 2 == 0) {\n      evenNumberCount++;\n    }\n  }\n}\n\n        if (firstException != null && !ignore) {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException firstException() {\n        return firstException;\n    }\n\n    public synchronized void setIgnore(boolean ignore) {\n        this.ignore = ignore;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "063f267219f0b7470f3313f4d89493137087c2e82c95e2ea7c65e897046c63d9", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 61, "local_path": "code-injection/inject-readable-unrelated-code/I08__apache-kafka__MockFaultHandler__88cbc8b1.java", "order": 8, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 2}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-37c188cbc8b1-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 205, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dace5dc02dd4-I09", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String name) {\n        this.name = name;\n    }\n\n    @Override\n    public synchronized RuntimeException handleFault(String failureMessage, Throwable cause) {\n{int lI0O_a8eac7e1=0x2ABB;lI0O_a8eac7e1=((lI0O_a8eac7e1&0)==0)?(((lI0O_a8eac7e1^lI0O_a8eac7e1)==0)?0:1):2;}\n\n        if (cause == null) {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage, cause);\n        }\n        FaultHandlerException e = (cause == null) ?\n                new FaultHandlerException(name + \": \" + failureMessage) :\n                new FaultHandlerException(name + \": \" + failureMessage +\n                        \": \" + cause.getMessage(), cause);\n        if (firstException == null) {\n            firstException = e;\n        }\n        return firstException;\n    }\n\n    public synchronized void maybeRethrowFirstException() {\n        if (firstException != null && !ignore) {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException firstException() {\n        return firstException;\n    }\n\n    public synchronized void setIgnore(boolean ignore) {\n        this.ignore = ignore;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d453741e01512c32c0ec64af0e7dc7ae3c5a86c25bc1c2b73500749200241a5c", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 54, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__apache-kafka__MockFaultHandler__5dc02dd4.java", "order": 9, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 8}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-dace5dc02dd4-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 206, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-058e6743240d-I10", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException; import org.slf4j.Logger;\nimport org.slf4j.LoggerFactory; /**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name; private FaultHandlerException firstException = null;\n    private boolean ignore = false; public MockFaultHandler(String name) { this.name = name;\n    }\n\n    @Override\n    public synchronized RuntimeException handleFault(String failureMessage, Throwable cause) {\n        if (cause == null) { log.error(\"Encountered {} fault: {}\", name, failureMessage);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage, cause); }\n        FaultHandlerException e = (cause == null) ? new FaultHandlerException(name + \": \" + failureMessage) : new FaultHandlerException(name + \": \" + failureMessage +\n                        \": \" + cause.getMessage(), cause);\n        if (firstException == null) {\n            firstException = e; } return firstException;\n    }\n\n    public synchronized void maybeRethrowFirstException() {\n        if (firstException != null && !ignore) {\n            throw firstException; } } public synchronized FaultHandlerException firstException() {\n        return firstException; }\n\n    public synchronized void setIgnore(boolean ignore) {\n        this.ignore = ignore;\n    } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "848bc8518c1af3c998cb72176b033900ed35c58f5adbb99eb422236d67fb1c50", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "partially-compact-layout", "level": 10, "line_count": 33, "local_path": "layout/partially-compact-layout/I10__apache-kafka__MockFaultHandler__6743240d.java", "order": 10, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 41, "line_break_groups_removed": 16, "line_breaks_removed": 19, "whitespace_characters_removed": 107}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-058e6743240d-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 207, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-75138179658b-I11", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String name) {\n        this.name = name;\n    }\n\n    @Override\n    public synchronized RuntimeException handleFault(String failureMessage, Throwable cause) {\n        if (cause == null) {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage, cause);\n        }\n        FaultHandlerException e = (cause == null) ?\n                new FaultHandlerException(name + \": \" + failureMessage) :\n                new FaultHandlerException(name + \": \" + failureMessage +\n                        \": \" + cause.getMessage(), cause);\n        if (firstException == null) {\n            firstException = e;\n        }\n        return firstException;\n    }\n\n    public synchronized void maybeRethrowFirstException() {\n        if (firstException != null && !ignore) {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException firstException() {\n        return firstException;\n    }\n\n    public synchronized void setIgnore(boolean ignore) {\n        this.ignore = ignore;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 52, "local_path": "data-flow/introduce-numeric-intermediates/I11__apache-kafka__MockFaultHandler__8179658b.java", "order": 11, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-75138179658b-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 208, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-370278ad869a-I12", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String name) {\n        this.name = name;\n    }\n\n    @Override\n    public synchronized RuntimeException handleFault(String failureMessage, Throwable cause) {\n        if (cause == null) {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage, cause);\n        }\n        FaultHandlerException e = (cause == null) ?\n                new FaultHandlerException(name + \": \" + failureMessage) :\n                new FaultHandlerException(name + \": \" + failureMessage +\n                        \": \" + cause.getMessage(), cause);\n        if (firstException == null) {\n            firstException = e;\n        }\n        return firstException;\n    }\n\n    public synchronized void maybeRethrowFirstException() {\n        if (firstException != null && !ignore) {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException firstException() {\n        return firstException;\n    }\n\n    public synchronized void setIgnore(boolean ignore) {\n        this.ignore = ignore;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 52, "local_path": "data-flow/inline-intermediate-variables/I12__apache-kafka__MockFaultHandler__78ad869a.java", "order": 12, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-370278ad869a-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 209, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9fc03864b440-I13", "source": "package org.apache.kafka.common.test;\nimport org.apache.kafka.server.fault.FaultHandler;\nimport org.apache.kafka.server.fault.FaultHandlerException;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\n/**\n * This is a fault handler suitable for use in JUnit tests. It will store the result of the first\n * call to handleFault that was made.\n */\npublic class MockFaultHandler implements FaultHandler {\n    private static final Logger log = LoggerFactory.getLogger(MockFaultHandler.class);\n\n    private final String name;\n    private FaultHandlerException firstException = null;\n    private boolean ignore = false;\n\n    public MockFaultHandler(String name) {\n        this.name = name;\n    }\n\n    @Override\n    public synchronized RuntimeException handleFault(String failureMessage, Throwable cause) {\n        if (cause == null) {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage);\n        } else {\n            log.error(\"Encountered {} fault: {}\", name, failureMessage, cause);\n        }\n        FaultHandlerException e = (cause == null) ?\n                new FaultHandlerException(name + \": \" + failureMessage) :\n                new FaultHandlerException(name + \": \" + failureMessage +\n                        \": \" + cause.getMessage(), cause);\n        if (firstException == null) {\n            firstException = e;\n        }\n        return firstException;\n    }\n\n    public synchronized void maybeRethrowFirstException() {\n        if (firstException != null && !ignore) {\n            throw firstException;\n        }\n    }\n\n    public synchronized FaultHandlerException firstException() {\n        return firstException;\n    }\n\n    public synchronized void setIgnore(boolean ignore) {\n        this.ignore = ignore;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__apache-kafka__MockFaultHandler__0e2e6d2e.java", "base_sample_id": "source-26f2e23e5141855d", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "apache-kafka:test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java", "interference": "lower-for-to-while", "level": 13, "line_count": 52, "local_path": "control-flow/lower-for-to-while/I13__apache-kafka__MockFaultHandler__3864b440.java", "order": 13, "original_content_sha256": "c64300c503949b831dc88f794f194a3463606a665230b27a9d380c9deb05a80e", "parent_variant_id": "int-bd550e2e6d2e-SRC", "readability_direction": "decreasing", "source": "apache-kafka", "source_name": "Apache Kafka", "source_path": "test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/MockFaultHandler.java#L27-L72", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "MockFaultHandler", "variant_id": "int-9fc03864b440-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 210, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2791dcba2bfd-SRC", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T defaultValue(Class<T> type) {\n    checkNotNull(type);\n    if (type.isPrimitive()) {\n      if (type == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (type == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (type == byte.class) {\n        return (T) Byte.valueOf((byte) 0);\n      } else if (type == short.class) {\n        return (T) Short.valueOf((short) 0);\n      } else if (type == int.class) {\n        return (T) Integer.valueOf(0);\n      } else if (type == long.class) {\n        return (T) Long.valueOf(0L);\n      } else if (type == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (type == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": null, "level": 0, "line_count": 53, "local_path": "source-original/SRC__google-guava__Defaults__dcba2bfd.java", "order": 0, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-2791dcba2bfd-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 407, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eaa195440b88-I01", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  \n\n\n\n\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\"  \n  })\n  public static <T> @Nullable T defaultValue(Class<T> type) {\n    checkNotNull(type);\n    if (type.isPrimitive()) {\n      if (type == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (type == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (type == byte.class) {\n        return (T) Byte.valueOf((byte) 0);\n      } else if (type == short.class) {\n        return (T) Short.valueOf((short) 0);\n      } else if (type == int.class) {\n        return (T) Integer.valueOf(0);\n      } else if (type == long.class) {\n        return (T) Long.valueOf(0L);\n      } else if (type == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (type == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "32396436ad574dc3031b68141d2a7b67c5d3f53c6c0fb28f03c59387aa0bb855", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "remove-comments", "level": 1, "line_count": 53, "local_path": "comments/remove-comments/I01__google-guava__Defaults__95440b88.java", "order": 1, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 398, "comments_removed": 3}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-eaa195440b88-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 408, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2fcc1106dc0f-I02", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T default2(Class<T> typ) {\n    checkNotNull(typ);\n    if (typ.isPrimitive()) {\n      if (typ == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (typ == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (typ == byte.class) {\n        return (T) Byte.valueOf((byte) 0);\n      } else if (typ == short.class) {\n        return (T) Short.valueOf((short) 0);\n      } else if (typ == int.class) {\n        return (T) Integer.valueOf(0);\n      } else if (typ == long.class) {\n        return (T) Long.valueOf(0L);\n      } else if (typ == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (typ == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "f6b57f2afb1f93b79f9fb17c41786f6386a5d657478253c55d557e06803e0d7b", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "shorten-identifiers", "level": 2, "line_count": 53, "local_path": "identifiers/shorten-identifiers/I02__google-guava__Defaults__1106dc0f.java", "order": 2, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 10, "identifiers_declared": 1, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 1, "method_name_groups": 1}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-2fcc1106dc0f-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 409, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f541dd6b81c8-I03", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T buildSession(Class<T> user) {\n    checkNotNull(user);\n    if (user.isPrimitive()) {\n      if (user == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (user == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (user == byte.class) {\n        return (T) Byte.valueOf((byte) 0);\n      } else if (user == short.class) {\n        return (T) Short.valueOf((short) 0);\n      } else if (user == int.class) {\n        return (T) Integer.valueOf(0);\n      } else if (user == long.class) {\n        return (T) Long.valueOf(0L);\n      } else if (user == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (user == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "f6856be71bc581a1c7f40161a7a6da1313b13714ee319e3858733c8b34d37283", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "mislead-identifiers", "level": 3, "line_count": 53, "local_path": "identifiers/mislead-identifiers/I03__google-guava__Defaults__dd6b81c8.java", "order": 3, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 10, "identifiers_declared": 1, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 1, "local_random_pool_selections": 1, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 1, "method_exact_length_matches": 1, "method_name_groups": 1, "method_random_pool_selections": 1, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-f541dd6b81c8-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 410, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-68d90a0745a2-I04", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T a(Class<T> a) {\n    checkNotNull(a);\n    if (a.isPrimitive()) {\n      if (a == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (a == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (a == byte.class) {\n        return (T) Byte.valueOf((byte) 0);\n      } else if (a == short.class) {\n        return (T) Short.valueOf((short) 0);\n      } else if (a == int.class) {\n        return (T) Integer.valueOf(0);\n      } else if (a == long.class) {\n        return (T) Long.valueOf(0L);\n      } else if (a == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (a == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "21aa222cfe9aca50134011734b989a5e09c93207d5364be22733f94dcb57912a", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "garble-identifiers", "level": 4, "line_count": 53, "local_path": "identifiers/garble-identifiers/I04__google-guava__Defaults__0a0745a2.java", "order": 4, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 10, "identifiers_declared": 1, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-68d90a0745a2-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 411, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c82cfd97077b-I05", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T defaultValue(Class<T> type) {\n    checkNotNull(type);\n    if (type.isPrimitive()) {\n      if (type == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (type == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (type == byte.class) {\n        return (T) Byte.valueOf((byte) 0x0);\n      } else if (type == short.class) {\n        return (T) Short.valueOf((short) 0x0);\n      } else if (type == int.class) {\n        return (T) Integer.valueOf(0x0);\n      } else if (type == long.class) {\n        return (T) Long.valueOf(0x0L);\n      } else if (type == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (type == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "91d63c2bbf81779dfa78680b021995e7d543effbd1680cb0c04cc08bb9f9c2b3", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "encode-integer-literals", "level": 5, "line_count": 53, "local_path": "expressions/encode-integer-literals/I05__google-guava__Defaults__fd97077b.java", "order": 5, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 4}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-c82cfd97077b-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 412, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a71e82a7b7c1-I06", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T defaultValue(Class<T> type) {\n    checkNotNull(type);\n    if (!((type.isPrimitive()))) {} else {\n      if (type == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (type == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (type == byte.class) {\n        return (T) Byte.valueOf((byte) 0);\n      } else if (type == short.class) {\n        return (T) Short.valueOf((short) 0);\n      } else if (type == int.class) {\n        return (T) Integer.valueOf(0);\n      } else if (type == long.class) {\n        return (T) Long.valueOf(0L);\n      } else if (type == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (type == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "9acbe49474ffed1054faeb47c2a2119bba28dd0be9320ff2b9bb862bc850ee04", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "invert-conditions", "level": 6, "line_count": 53, "local_path": "expressions/invert-conditions/I06__google-guava__Defaults__82a7b7c1.java", "order": 6, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-a71e82a7b7c1-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 413, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3c6616ec1871-I07", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {\nif (((0xC2F ^ 0xC2F) != 0)) { throw new AssertionError(); }\n}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T defaultValue(Class<T> type) {\nif (((0xA711 ^ 0xA711) != 0)) { throw new AssertionError(); }\n\n    checkNotNull(type);\n    if (type.isPrimitive()) {\n      if (type == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (type == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (type == byte.class) {\n        return (T) Byte.valueOf((byte) 0);\n      } else if (type == short.class) {\n        return (T) Short.valueOf((short) 0);\n      } else if (type == int.class) {\n        return (T) Integer.valueOf(0);\n      } else if (type == long.class) {\n        return (T) Long.valueOf(0L);\n      } else if (type == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (type == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "1e188a36cdf792802fda130ee979aa7dc0c37ef2de7918d4b60625338442ac93", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "insert-dead-branches", "level": 7, "line_count": 57, "local_path": "code-injection/insert-dead-branches/I07__google-guava__Defaults__16ec1871.java", "order": 7, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 2}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-3c6616ec1871-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 414, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5d719c330842-I08", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {\n{\n  int previousNumber = 0;\n  int currentNumber = 1;\n  for (int sequenceStep = 0; sequenceStep < 4; sequenceStep++) {\n    int nextNumber = previousNumber + currentNumber;\n    previousNumber = currentNumber;\n    currentNumber = nextNumber;\n  }\n}\n}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T defaultValue(Class<T> type) {\n    checkNotNull(type);\n    if (type.isPrimitive()) {\n      if (type == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (type == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (type == byte.class) {\n        return (T) Byte.valueOf((byte) 0);\n      } else if (type == short.class) {\n        return (T) Short.valueOf((short) 0);\n      } else if (type == int.class) {\n        return (T) Integer.valueOf(0);\n      } else if (type == long.class) {\n        return (T) Long.valueOf(0L);\n      } else if (type == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (type == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "1c17e8190d600aab690903c2a44cd8c29170256b956a7deab67c2cd78dd790f3", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 63, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__Defaults__9c330842.java", "order": 8, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 9, "readable_template_index": 8}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-5d719c330842-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 415, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2e153b8a2d0b-I09", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {\n{int lI0O_8e73afe4=0x7B99,lI0O_664fe694=~lI0O_8e73afe4;lI0O_8e73afe4=(lI0O_8e73afe4&lI0O_664fe694)|(lI0O_8e73afe4^lI0O_8e73afe4);lI0O_664fe694^=lI0O_664fe694;}\n}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T defaultValue(Class<T> type) {\n    checkNotNull(type);\n    if (type.isPrimitive()) {\n      if (type == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (type == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (type == byte.class) {\n        return (T) Byte.valueOf((byte) 0);\n      } else if (type == short.class) {\n        return (T) Short.valueOf((short) 0);\n      } else if (type == int.class) {\n        return (T) Integer.valueOf(0);\n      } else if (type == long.class) {\n        return (T) Long.valueOf(0L);\n      } else if (type == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (type == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "db04bf74afdc7bad3dcc8e5c3a9d46e799832bc6979b7f8adff9b3de9d860d20", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 55, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__Defaults__3b8a2d0b.java", "order": 9, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 9}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-2e153b8a2d0b-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 416, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-667f0ab6033e-I10", "source": "package com.google.common.base; import static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible; import com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible @GwtIncompatible\npublic final class Defaults { private Defaults() {}\n\n  private static final Double DOUBLE_DEFAULT = 0d; private static final Float FLOAT_DEFAULT = 0f; /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */ @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T defaultValue(Class<T> type) { checkNotNull(type);\n    if (type.isPrimitive()) { if (type == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (type == char.class) { return (T) Character.valueOf('\\0');\n      } else if (type == byte.class) { return (T) Byte.valueOf((byte) 0);\n      } else if (type == short.class) {\n        return (T) Short.valueOf((short) 0); } else if (type == int.class) { return (T) Integer.valueOf(0);\n      } else if (type == long.class) {\n        return (T) Long.valueOf(0L);\n      } else if (type == float.class) {\n        return (T) FLOAT_DEFAULT; } else if (type == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null; }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "e86aaa88cf52d5f97061cfefa564f8f6adda2584ec60057c441fada47db996bd", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "partially-compact-layout", "level": 10, "line_count": 37, "local_path": "layout/partially-compact-layout/I10__google-guava__Defaults__0ab6033e.java", "order": 10, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 39, "line_break_groups_removed": 15, "line_breaks_removed": 16, "whitespace_characters_removed": 57}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-667f0ab6033e-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 417, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-725318bfed1b-I11", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T defaultValue(Class<T> type) {\n    checkNotNull(type);\n    if (type.isPrimitive()) {\n      if (type == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (type == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (type == byte.class) {\n        final int a = 1;\n        final int b = -1;\n        return (T) Byte.valueOf((byte) (a + b));\n      } else if (type == short.class) {\n        final int c = 1;\n        final int d = -1;\n        return (T) Short.valueOf((short) (c + d));\n      } else if (type == int.class) {\n        final int e = 1;\n        final int f = -1;\n        return (T) Integer.valueOf((e + f));\n      } else if (type == long.class) {\n        final long g = 1L;\n        final long h = -1L;\n        return (T) Long.valueOf((g + h));\n      } else if (type == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (type == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "612ca5d2cb4f6875d1d5449d48dbf04b1b1f288826c199c0bb09bdc93dbe35d4", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 61, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__Defaults__18bfed1b.java", "order": 11, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 4, "intermediate_variables_introduced": 8, "statements_augmented": 4}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-725318bfed1b-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 418, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-685e079a5885-I12", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T defaultValue(Class<T> type) {\n    checkNotNull(type);\n    if (type.isPrimitive()) {\n      if (type == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (type == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (type == byte.class) {\n        return (T) Byte.valueOf((byte) 0);\n      } else if (type == short.class) {\n        return (T) Short.valueOf((short) 0);\n      } else if (type == int.class) {\n        return (T) Integer.valueOf(0);\n      } else if (type == long.class) {\n        return (T) Long.valueOf(0L);\n      } else if (type == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (type == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 53, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__Defaults__079a5885.java", "order": 12, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-685e079a5885-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 419, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-109590781a81-I13", "source": "package com.google.common.base;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * This class provides default values for all Java types, as defined by the JLS.\n *\n * @author Ben Yu\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic final class Defaults {\n  private Defaults() {}\n\n  private static final Double DOUBLE_DEFAULT = 0d;\n  private static final Float FLOAT_DEFAULT = 0f;\n\n  /**\n   * Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code\n   * false} for {@code boolean} and {@code '\\0'} for {@code char}. For non-primitive types and\n   * {@code void}, {@code null} is returned.\n   */\n  @SuppressWarnings({\n    \"unchecked\",\n    \"BooleanLiteral\" // `(T) false` would produce an error\n  })\n  public static <T> @Nullable T defaultValue(Class<T> type) {\n    checkNotNull(type);\n    if (type.isPrimitive()) {\n      if (type == boolean.class) {\n        return (T) Boolean.FALSE;\n      } else if (type == char.class) {\n        return (T) Character.valueOf('\\0');\n      } else if (type == byte.class) {\n        return (T) Byte.valueOf((byte) 0);\n      } else if (type == short.class) {\n        return (T) Short.valueOf((short) 0);\n      } else if (type == int.class) {\n        return (T) Integer.valueOf(0);\n      } else if (type == long.class) {\n        return (T) Long.valueOf(0L);\n      } else if (type == float.class) {\n        return (T) FLOAT_DEFAULT;\n      } else if (type == double.class) {\n        return (T) DOUBLE_DEFAULT;\n      }\n    }\n    return null;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__Defaults__dcba2bfd.java", "base_sample_id": "source-0c7cd72f0941fb27", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/base/Defaults.java", "interference": "lower-for-to-while", "level": 13, "line_count": 53, "local_path": "control-flow/lower-for-to-while/I13__google-guava__Defaults__90781a81.java", "order": 13, "original_content_sha256": "c9e68a973680e354ad8741d8a6d7c3cf5b0f424e9dce8a266974b57c623d1ddf", "parent_variant_id": "int-2791dcba2bfd-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/base/Defaults.java#L23-L69", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "Defaults", "variant_id": "int-109590781a81-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 420, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-86d6f9da4472-SRC", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n/**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void increment();\n\n  void add(long x);\n\n  long sum();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": null, "level": 0, "line_count": 16, "local_path": "source-original/SRC__google-guava__LongAddable__f9da4472.java", "order": 0, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-86d6f9da4472-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 547, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-075cc4801f4f-I01", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n\n\n\n\n\n@GwtCompatible\ninterface LongAddable {\n  void increment();\n\n  void add(long x);\n\n  long sum();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "66ed3a969fbd1218a0b7138e8d336ab136177c065df81588ae5566ca43d3fe8c", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "remove-comments", "level": 1, "line_count": 16, "local_path": "comments/remove-comments/I01__google-guava__LongAddable__c4801f4f.java", "order": 1, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 100, "comments_removed": 1}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-075cc4801f4f-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 548, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-116201ba2008-I02", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n/**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void inc();\n\n  void add(long x);\n\n  long sum();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "ae10db6df77597680d7dbd821b9f0851d3aecdc9af554b3b744df2d0a9814d87", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "shorten-identifiers", "level": 2, "line_count": 16, "local_path": "identifiers/shorten-identifiers/I02__google-guava__LongAddable__01ba2008.java", "order": 2, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 1, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-116201ba2008-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 549, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-64d46fd83cdd-I03", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n/**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void saveState();\n\n  void sort(long age);\n\n  long add();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "670529a32afeba48b2b5d1964ea78ab10f830e7fff8f4f3f0d3c4c347c554347", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "mislead-identifiers", "level": 3, "line_count": 16, "local_path": "identifiers/mislead-identifiers/I03__google-guava__LongAddable__6fd83cdd.java", "order": 3, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 1, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 0, "local_random_pool_selections": 1, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 2, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 1}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-64d46fd83cdd-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 550, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-24a84ab8f1e0-I04", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n/**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void a();\n\n  void b(long a);\n\n  long c();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "5f724545baf03fdf3eceb90b08bf86fff5bfba34e51fd1c77830e89de9748ccd", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "garble-identifiers", "level": 4, "line_count": 16, "local_path": "identifiers/garble-identifiers/I04__google-guava__LongAddable__4ab8f1e0.java", "order": 4, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 1, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-24a84ab8f1e0-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 551, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-87a200df3687-I05", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n/**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void increment();\n\n  void add(long x);\n\n  long sum();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "encode-integer-literals", "level": 5, "line_count": 16, "local_path": "expressions/encode-integer-literals/I05__google-guava__LongAddable__00df3687.java", "order": 5, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-87a200df3687-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 552, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f7e06cc8575e-I06", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n/**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void increment();\n\n  void add(long x);\n\n  long sum();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "invert-conditions", "level": 6, "line_count": 16, "local_path": "expressions/invert-conditions/I06__google-guava__LongAddable__6cc8575e.java", "order": 6, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-f7e06cc8575e-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 553, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-27aeefed229b-I07", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n/**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void increment();\n\n  void add(long x);\n\n  long sum();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "insert-dead-branches", "level": 7, "line_count": 16, "local_path": "code-injection/insert-dead-branches/I07__google-guava__LongAddable__efed229b.java", "order": 7, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-27aeefed229b-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 554, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0bb756ecd21c-I08", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n/**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void increment();\n\n  void add(long x);\n\n  long sum();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 16, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__LongAddable__56ecd21c.java", "order": 8, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-0bb756ecd21c-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 555, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-92c2ae7f87a0-I09", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n/**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void increment();\n\n  void add(long x);\n\n  long sum();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 16, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__LongAddable__ae7f87a0.java", "order": 9, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-92c2ae7f87a0-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 556, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bb4f2138b42b-I10", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible; /**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void increment(); void add(long x);\n\n  long sum(); }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "29dd67c404e9cc8adf9d8ee7265ff2fe9bf2906026f7f3e10beed83c5134ac71", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "partially-compact-layout", "level": 10, "line_count": 11, "local_path": "layout/partially-compact-layout/I10__google-guava__LongAddable__2138b42b.java", "order": 10, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 8, "line_break_groups_removed": 3, "line_breaks_removed": 5, "whitespace_characters_removed": 4}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-bb4f2138b42b-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 557, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e5695abd57b3-I11", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n/**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void increment();\n\n  void add(long x);\n\n  long sum();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 16, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__LongAddable__5abd57b3.java", "order": 11, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-e5695abd57b3-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 558, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c4ed48d8d846-I12", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n/**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void increment();\n\n  void add(long x);\n\n  long sum();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 16, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__LongAddable__48d8d846.java", "order": 12, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-c4ed48d8d846-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 559, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1703c3076a91-I13", "source": "package com.google.common.cache;\nimport com.google.common.annotations.GwtCompatible;\n\n/**\n * Abstract interface for objects that can concurrently add longs.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\ninterface LongAddable {\n  void increment();\n\n  void add(long x);\n\n  long sum();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__LongAddable__f9da4472.java", "base_sample_id": "source-8d27362938a3b4ee", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/LongAddable.java", "interference": "lower-for-to-while", "level": 13, "line_count": 16, "local_path": "control-flow/lower-for-to-while/I13__google-guava__LongAddable__c3076a91.java", "order": 13, "original_content_sha256": "6970fbc266206fd2c1ef5d35cc58ee9be595f2863ff94c8264d141675a8734b7", "parent_variant_id": "int-86d6f9da4472-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/LongAddable.java#L19-L31", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "LongAddable", "variant_id": "int-1703c3076a91-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 560, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2946774d5fe5-SRC", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> asynchronous(\n      RemovalListener<K, V> listener, Executor executor) {\n    checkNotNull(listener);\n    checkNotNull(executor);\n    return (RemovalNotification<K, V> notification) ->\n        executor.execute(() -> listener.onRemoval(notification));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": null, "level": 0, "line_count": 31, "local_path": "source-original/SRC__google-guava__RemovalListeners__774d5fe5.java", "order": 0, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-2946774d5fe5-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 631, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f916255bca1a-I01", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n\n\n\n\n\n\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {}\n\n  \n\n\n\n\n\n\n  public static <K, V> RemovalListener<K, V> asynchronous(\n      RemovalListener<K, V> listener, Executor executor) {\n    checkNotNull(listener);\n    checkNotNull(executor);\n    return (RemovalNotification<K, V> notification) ->\n        executor.execute(() -> listener.onRemoval(notification));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "adbf5a3af89dd64afab9e290dddc9509a411e8ed47b21753765a05bda96ef550", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "remove-comments", "level": 1, "line_count": 31, "local_path": "comments/remove-comments/I01__google-guava__RemovalListeners__255bca1a.java", "order": 1, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 344, "comments_removed": 2}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-f916255bca1a-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 632, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fff69d33c8fb-I02", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> asy(\n      RemovalListener<K, V> lis, Executor exe) {\n    checkNotNull(lis);\n    checkNotNull(exe);\n    return (RemovalNotification<K, V> not) ->\n        exe.execute(() -> lis.onRemoval(not));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "18c27eda52e9b1b7be7e490b6d6959436228c386b62603ffe711f24fa7f66a27", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "shorten-identifiers", "level": 2, "line_count": 31, "local_path": "identifiers/shorten-identifiers/I02__google-guava__RemovalListeners__9d33c8fb.java", "order": 2, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 5, "identifiers_declared": 3, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-fff69d33c8fb-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 633, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-326d9e039bda-I03", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> removeBuffer(\n      RemovalListener<K, V> category, Executor document) {\n    checkNotNull(category);\n    checkNotNull(document);\n    return (RemovalNotification<K, V> sharedBuffer) ->\n        document.execute(() -> category.onRemoval(sharedBuffer));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7869981426123bf999bc862ba61b53e5df167a1e12377909abde5c68cea1aaa6", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "mislead-identifiers", "level": 3, "line_count": 31, "local_path": "identifiers/mislead-identifiers/I03__google-guava__RemovalListeners__9e039bda.java", "order": 3, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 5, "identifiers_declared": 3, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 3, "local_random_pool_selections": 3, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 1, "method_exact_length_matches": 1, "method_name_groups": 1, "method_random_pool_selections": 1, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-326d9e039bda-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 634, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-51e080b9fe84-I04", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> a(\n      RemovalListener<K, V> a, Executor b) {\n    checkNotNull(a);\n    checkNotNull(b);\n    return (RemovalNotification<K, V> c) ->\n        b.execute(() -> a.onRemoval(c));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a7653f7e2aaf91acde907ab8c126784c9d3310f8d5659e7dfdadda63400d08cc", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "garble-identifiers", "level": 4, "line_count": 31, "local_path": "identifiers/garble-identifiers/I04__google-guava__RemovalListeners__80b9fe84.java", "order": 4, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 5, "identifiers_declared": 3, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-51e080b9fe84-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 635, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0277d21da9e4-I05", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> asynchronous(\n      RemovalListener<K, V> listener, Executor executor) {\n    checkNotNull(listener);\n    checkNotNull(executor);\n    return (RemovalNotification<K, V> notification) ->\n        executor.execute(() -> listener.onRemoval(notification));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "encode-integer-literals", "level": 5, "line_count": 31, "local_path": "expressions/encode-integer-literals/I05__google-guava__RemovalListeners__d21da9e4.java", "order": 5, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-0277d21da9e4-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 636, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cd31110ab6b0-I06", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> asynchronous(\n      RemovalListener<K, V> listener, Executor executor) {\n    checkNotNull(listener);\n    checkNotNull(executor);\n    return (RemovalNotification<K, V> notification) ->\n        executor.execute(() -> listener.onRemoval(notification));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "invert-conditions", "level": 6, "line_count": 31, "local_path": "expressions/invert-conditions/I06__google-guava__RemovalListeners__110ab6b0.java", "order": 6, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-cd31110ab6b0-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 637, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-15c5e497f7e0-I07", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {\nif (((0xE5E4 ^ 0xE5E4) != 0)) { throw new AssertionError(); }\n}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> asynchronous(\n      RemovalListener<K, V> listener, Executor executor) {\nif (((0x1BF7 ^ 0x1BF7) != 0)) { throw new AssertionError(); }\n\n    checkNotNull(listener);\n    checkNotNull(executor);\n    return (RemovalNotification<K, V> notification) ->\n        executor.execute(() -> listener.onRemoval(notification));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "82bfbf97f6f547fa57380738474396abe438d0b6d10f85e0a8cdc05590616892", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "insert-dead-branches", "level": 7, "line_count": 35, "local_path": "code-injection/insert-dead-branches/I07__google-guava__RemovalListeners__e497f7e0.java", "order": 7, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 2}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-15c5e497f7e0-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 638, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-34921fa4e7f6-I08", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {\n{\n  int firstScore = 72;\n  int secondScore = 85;\n  int higherScore;\n  if (firstScore > secondScore) {\n    higherScore = firstScore;\n  } else {\n    higherScore = secondScore;\n  }\n}\n}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> asynchronous(\n      RemovalListener<K, V> listener, Executor executor) {\n    checkNotNull(listener);\n    checkNotNull(executor);\n    return (RemovalNotification<K, V> notification) ->\n        executor.execute(() -> listener.onRemoval(notification));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "7204c168d2eba1f72fc2dc7994781dae1289851ebb6333c2d88664edf1577999", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 42, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__RemovalListeners__1fa4e7f6.java", "order": 8, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 10, "readable_template_index": 3}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-34921fa4e7f6-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 639, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-baeed3857747-I09", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {\n{int lI0O_41a6abf5=(0xF35D^0xF35D);switch(lI0O_41a6abf5){case 0:lI0O_41a6abf5|=0;break;default:lI0O_41a6abf5&=0;}}\n}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> asynchronous(\n      RemovalListener<K, V> listener, Executor executor) {\n    checkNotNull(listener);\n    checkNotNull(executor);\n    return (RemovalNotification<K, V> notification) ->\n        executor.execute(() -> listener.onRemoval(notification));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "2a7fed433a31d60235c6abe88c6faf4d605467ead09605b759867f393374349f", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 33, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__RemovalListeners__d3857747.java", "order": 9, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 6}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-baeed3857747-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 640, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7c25b5c5fd83-I10", "source": "package com.google.common.cache; import static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners { private RemovalListeners() {}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> asynchronous( RemovalListener<K, V> listener, Executor executor) { checkNotNull(listener);\n    checkNotNull(executor);\n    return (RemovalNotification<K, V> notification) -> executor.execute(() -> listener.onRemoval(notification));\n  } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "47e40c29b77bd5a1064565229a2d3d2281597ebd60a04785ec21e70b3fc73c62", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "partially-compact-layout", "level": 10, "line_count": 24, "local_path": "layout/partially-compact-layout/I10__google-guava__RemovalListeners__b5c5fd83.java", "order": 10, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 16, "line_break_groups_removed": 6, "line_breaks_removed": 7, "whitespace_characters_removed": 21}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-7c25b5c5fd83-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 641, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1e2356dbee26-I11", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> asynchronous(\n      RemovalListener<K, V> listener, Executor executor) {\n    checkNotNull(listener);\n    checkNotNull(executor);\n    return (RemovalNotification<K, V> notification) ->\n        executor.execute(() -> listener.onRemoval(notification));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 31, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__RemovalListeners__56dbee26.java", "order": 11, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-1e2356dbee26-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 642, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-755da21dc354-I12", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> asynchronous(\n      RemovalListener<K, V> listener, Executor executor) {\n    checkNotNull(listener);\n    checkNotNull(executor);\n    return (RemovalNotification<K, V> notification) ->\n        executor.execute(() -> listener.onRemoval(notification));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 31, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__RemovalListeners__a21dc354.java", "order": 12, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-755da21dc354-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 643, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-15b85e1bc4ce-I13", "source": "package com.google.common.cache;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtIncompatible;\nimport java.util.concurrent.Executor;\n\n/**\n * A collection of common removal listeners.\n *\n * @author Charles Fry\n * @since 10.0\n */\n@GwtIncompatible\npublic final class RemovalListeners {\n\n  private RemovalListeners() {}\n\n  /**\n   * Returns a {@code RemovalListener} which processes all eviction notifications using {@code\n   * executor}.\n   *\n   * @param listener the backing listener\n   * @param executor the executor with which removal notifications are asynchronously executed\n   */\n  public static <K, V> RemovalListener<K, V> asynchronous(\n      RemovalListener<K, V> listener, Executor executor) {\n    checkNotNull(listener);\n    checkNotNull(executor);\n    return (RemovalNotification<K, V> notification) ->\n        executor.execute(() -> listener.onRemoval(notification));\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__RemovalListeners__774d5fe5.java", "base_sample_id": "source-4bcccbb93ba9eac7", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/cache/RemovalListeners.java", "interference": "lower-for-to-while", "level": 13, "line_count": 31, "local_path": "control-flow/lower-for-to-while/I13__google-guava__RemovalListeners__5e1bc4ce.java", "order": 13, "original_content_sha256": "6f72be501b6b4fd49e4afc8d8c1847357871938d39bff86215b1cdb982d0096f", "parent_variant_id": "int-2946774d5fe5-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/cache/RemovalListeners.java#L22-L47", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "RemovalListeners", "variant_id": "int-15b85e1bc4ce-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 644, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6c6134e6bafe-SRC", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K getKey();\n\n  @Override\n  @ParametricNullness\n  public abstract V getValue();\n\n  @Override\n  @ParametricNullness\n  public V setValue(@ParametricNullness V value) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean equals(@Nullable Object object) {\n    if (object instanceof Entry) {\n      Entry<?, ?> that = (Entry<?, ?>) object;\n      return Objects.equals(this.getKey(), that.getKey())\n          && Objects.equals(this.getValue(), that.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int hashCode() {\n    K k = getKey();\n    V v = getValue();\n    return ((k == null) ? 0 : k.hashCode()) ^ ((v == null) ? 0 : v.hashCode());\n  }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override\n  public String toString() {\n    return getKey() + \"=\" + getValue();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": null, "level": 0, "line_count": 53, "local_path": "source-original/SRC__google-guava__AbstractMapEntry__34e6bafe.java", "order": 0, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-6c6134e6bafe-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 351, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e2aa9725acc8-I01", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K getKey();\n\n  @Override\n  @ParametricNullness\n  public abstract V getValue();\n\n  @Override\n  @ParametricNullness\n  public V setValue(@ParametricNullness V value) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean equals(@Nullable Object object) {\n    if (object instanceof Entry) {\n      Entry<?, ?> that = (Entry<?, ?>) object;\n      return Objects.equals(this.getKey(), that.getKey())\n          && Objects.equals(this.getValue(), that.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int hashCode() {\n    K k = getKey();\n    V v = getValue();\n    return ((k == null) ? 0 : k.hashCode()) ^ ((v == null) ? 0 : v.hashCode());\n  }\n\n   \n  @Override\n  public String toString() {\n    return getKey() + \"=\" + getValue();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "2e3b6d0c397346ea0119b28b41486e870b04debfb44cbf8fae742363090d8876", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "remove-comments", "level": 1, "line_count": 53, "local_path": "comments/remove-comments/I01__google-guava__AbstractMapEntry__9725acc8.java", "order": 1, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 208, "comments_removed": 2}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-e2aa9725acc8-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 352, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a90c9c0a419f-I02", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K get();\n\n  @Override\n  @ParametricNullness\n  public abstract V get2();\n\n  @Override\n  @ParametricNullness\n  public V set(@ParametricNullness V val) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean equ(@Nullable Object obj) {\n    if (obj instanceof Entry) {\n      Entry<?, ?> tha = (Entry<?, ?>) obj;\n      return Objects.equals(this.get(), tha.getKey())\n          && Objects.equals(this.get2(), tha.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int hash() {\n    K k = get();\n    V v = get2();\n    return ((k == null) ? 0 : k.hashCode()) ^ ((v == null) ? 0 : v.hashCode());\n  }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override\n  public String to() {\n    return get() + \"=\" + get2();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "8d22c37a5b8974662d718c1f35166af6d4ccfff164994e3877e6b52683acd41e", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "shorten-identifiers", "level": 2, "line_count": 53, "local_path": "identifiers/shorten-identifiers/I02__google-guava__AbstractMapEntry__9c0a419f.java", "order": 2, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 6, "method_declarations_renamed": 6, "method_name_collisions_avoided": 1, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-a90c9c0a419f-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 353, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-021844a568a0-I03", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K encode();\n\n  @Override\n  @ParametricNullness\n  public abstract V saveUser();\n\n  @Override\n  @ParametricNullness\n  public V sendData(@ParametricNullness V cache) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean export(@Nullable Object client) {\n    if (client instanceof Entry) {\n      Entry<?, ?> node = (Entry<?, ?>) client;\n      return Objects.equals(this.encode(), node.getKey())\n          && Objects.equals(this.saveUser(), node.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int checkKey() {\n    K key = encode();\n    V map = saveUser();\n    return ((key == null) ? 0 : key.hashCode()) ^ ((map == null) ? 0 : map.hashCode());\n  }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override\n  public String findData() {\n    return encode() + \"=\" + saveUser();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7388b65306e1fb4f280bc739fbec08a8e8b3181a5c5ffef9f088c1b8e9c98826", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "mislead-identifiers", "level": 3, "line_count": 53, "local_path": "identifiers/mislead-identifiers/I03__google-guava__AbstractMapEntry__44a568a0.java", "order": 3, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 3, "local_random_pool_selections": 5, "local_total_length_difference": 4, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 6, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 1, "method_declarations_renamed": 6, "method_exact_length_matches": 6, "method_name_groups": 6, "method_random_pool_selections": 6, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-021844a568a0-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 354, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9e6ea973ab7c-I04", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K a();\n\n  @Override\n  @ParametricNullness\n  public abstract V b();\n\n  @Override\n  @ParametricNullness\n  public V c(@ParametricNullness V a) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean d(@Nullable Object b) {\n    if (b instanceof Entry) {\n      Entry<?, ?> c = (Entry<?, ?>) b;\n      return Objects.equals(this.a(), c.getKey())\n          && Objects.equals(this.b(), c.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int e() {\n    K d = a();\n    V e = b();\n    return ((d == null) ? 0 : d.hashCode()) ^ ((e == null) ? 0 : e.hashCode());\n  }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override\n  public String f() {\n    return a() + \"=\" + b();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "db4a1f8b40e86ccb29114e770d668a29797e1273e2a92fbc9b8f63100723bde4", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "garble-identifiers", "level": 4, "line_count": 53, "local_path": "identifiers/garble-identifiers/I04__google-guava__AbstractMapEntry__a973ab7c.java", "order": 4, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 6, "method_declarations_renamed": 6, "method_name_collisions_avoided": 0, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-9e6ea973ab7c-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 355, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9e2271cdc8de-I05", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K getKey();\n\n  @Override\n  @ParametricNullness\n  public abstract V getValue();\n\n  @Override\n  @ParametricNullness\n  public V setValue(@ParametricNullness V value) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean equals(@Nullable Object object) {\n    if (object instanceof Entry) {\n      Entry<?, ?> that = (Entry<?, ?>) object;\n      return Objects.equals(this.getKey(), that.getKey())\n          && Objects.equals(this.getValue(), that.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int hashCode() {\n    K k = getKey();\n    V v = getValue();\n    return ((k == null) ? 0x0 : k.hashCode()) ^ ((v == null) ? 0x0 : v.hashCode());\n  }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override\n  public String toString() {\n    return getKey() + \"=\" + getValue();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "7ee76be9e535bf2d75bbf25b92207cf549e2ebd7db0d5520671fc30672189751", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "encode-integer-literals", "level": 5, "line_count": 53, "local_path": "expressions/encode-integer-literals/I05__google-guava__AbstractMapEntry__71cdc8de.java", "order": 5, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 2}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-9e2271cdc8de-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 356, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a90523693c70-I06", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K getKey();\n\n  @Override\n  @ParametricNullness\n  public abstract V getValue();\n\n  @Override\n  @ParametricNullness\n  public V setValue(@ParametricNullness V value) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean equals(@Nullable Object object) {\n    if (!((object instanceof Entry))) {} else {\n      Entry<?, ?> that = (Entry<?, ?>) object;\n      return Objects.equals(this.getKey(), that.getKey())\n          && Objects.equals(this.getValue(), that.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int hashCode() {\n    K k = getKey();\n    V v = getValue();\n    return ((k == null) ? 0 : k.hashCode()) ^ ((v == null) ? 0 : v.hashCode());\n  }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override\n  public String toString() {\n    return getKey() + \"=\" + getValue();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "33e1ae8d767b5454cc9cbe81770ced4ea756352b89aca9c4e7e95dad368279bf", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "invert-conditions", "level": 6, "line_count": 53, "local_path": "expressions/invert-conditions/I06__google-guava__AbstractMapEntry__23693c70.java", "order": 6, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-a90523693c70-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 357, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-06e381535656-I07", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K getKey();\n\n  @Override\n  @ParametricNullness\n  public abstract V getValue();\n\n  @Override\n  @ParametricNullness\n  public V setValue(@ParametricNullness V value) {\nif (((0xB29B ^ 0xB29B) != 0)) { throw new AssertionError(); }\n\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean equals(@Nullable Object object) {\nif (((0x61B2 ^ 0x61B2) != 0)) { throw new AssertionError(); }\n\n    if (object instanceof Entry) {\n      Entry<?, ?> that = (Entry<?, ?>) object;\n      return Objects.equals(this.getKey(), that.getKey())\n          && Objects.equals(this.getValue(), that.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int hashCode() {\nif (((0xD1FC ^ 0xD1FC) != 0)) { throw new AssertionError(); }\n\n    K k = getKey();\n    V v = getValue();\n    return ((k == null) ? 0 : k.hashCode()) ^ ((v == null) ? 0 : v.hashCode());\n  }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override\n  public String toString() {\nif (((0x98EF ^ 0x98EF) != 0)) { throw new AssertionError(); }\n\n    return getKey() + \"=\" + getValue();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "1342b089c8d8f1fbbc8e45bf173f3d0811ba7d7312a3909ca740581c789ece96", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "insert-dead-branches", "level": 7, "line_count": 61, "local_path": "code-injection/insert-dead-branches/I07__google-guava__AbstractMapEntry__81535656.java", "order": 7, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-06e381535656-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 358, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3f016336a7ba-I08", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K getKey();\n\n  @Override\n  @ParametricNullness\n  public abstract V getValue();\n\n  @Override\n  @ParametricNullness\n  public V setValue(@ParametricNullness V value) {\n{\n  int startingPosition = 2;\n  int endingPosition = 9;\n  int travelDistance = endingPosition - startingPosition;\n  if (travelDistance < 0) {\n    travelDistance = -travelDistance;\n  }\n}\n\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean equals(@Nullable Object object) {\n    if (object instanceof Entry) {\n      Entry<?, ?> that = (Entry<?, ?>) object;\n      return Objects.equals(this.getKey(), that.getKey())\n          && Objects.equals(this.getValue(), that.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int hashCode() {\n    K k = getKey();\n    V v = getValue();\n    return ((k == null) ? 0 : k.hashCode()) ^ ((v == null) ? 0 : v.hashCode());\n  }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override\n  public String toString() {\n    return getKey() + \"=\" + getValue();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "89449eea3273db604ee74a126b06f07adf9f07b4081053e08479cce2d602703a", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 62, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__AbstractMapEntry__6336a7ba.java", "order": 8, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 9}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-3f016336a7ba-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 359, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cd1ad6db4b4b-I09", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K getKey();\n\n  @Override\n  @ParametricNullness\n  public abstract V getValue();\n\n  @Override\n  @ParametricNullness\n  public V setValue(@ParametricNullness V value) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean equals(@Nullable Object object) {\n    if (object instanceof Entry) {\n      Entry<?, ?> that = (Entry<?, ?>) object;\n      return Objects.equals(this.getKey(), that.getKey())\n          && Objects.equals(this.getValue(), that.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int hashCode() {\n    K k = getKey();\n    V v = getValue();\n    return ((k == null) ? 0 : k.hashCode()) ^ ((v == null) ? 0 : v.hashCode());\n  }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override\n  public String toString() {\n{int lI0O_bd153edc=0,lI0O_605baeaa=0;while(lI0O_605baeaa<2){lI0O_bd153edc^=(lI0O_605baeaa<<1)^0xD;lI0O_605baeaa++;}lI0O_bd153edc^=lI0O_bd153edc;}\n\n    return getKey() + \"=\" + getValue();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "910c8ab01c1c2189ae97057227a4c383b983bc504a2da8c743a20dcc31221197", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 55, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__AbstractMapEntry__d6db4b4b.java", "order": 9, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 2}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-cd1ad6db4b4b-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 360, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5c34387e7f00-I10", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible; import java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */ @GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> { @Override\n  @ParametricNullness\n  public abstract K getKey();\n\n  @Override @ParametricNullness\n  public abstract V getValue(); @Override\n  @ParametricNullness public V setValue(@ParametricNullness V value) { throw new UnsupportedOperationException();\n  } @Override\n  public boolean equals(@Nullable Object object) {\n    if (object instanceof Entry) {\n      Entry<?, ?> that = (Entry<?, ?>) object; return Objects.equals(this.getKey(), that.getKey())\n          && Objects.equals(this.getValue(), that.getValue());\n    }\n    return false; }\n\n  @Override public int hashCode() {\n    K k = getKey(); V v = getValue(); return ((k == null) ? 0 : k.hashCode()) ^ ((v == null) ? 0 : v.hashCode()); }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override public String toString() {\n    return getKey() + \"=\" + getValue();\n  } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "e9e753b96bdb11b6e7e584b3c94a66970d720acde9217692d2a3fe9c9c21a9f3", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "partially-compact-layout", "level": 10, "line_count": 34, "local_path": "layout/partially-compact-layout/I10__google-guava__AbstractMapEntry__387e7f00.java", "order": 10, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 40, "line_break_groups_removed": 16, "line_breaks_removed": 19, "whitespace_characters_removed": 39}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-5c34387e7f00-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 361, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8096c343d31d-I11", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K getKey();\n\n  @Override\n  @ParametricNullness\n  public abstract V getValue();\n\n  @Override\n  @ParametricNullness\n  public V setValue(@ParametricNullness V value) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean equals(@Nullable Object object) {\n    if (object instanceof Entry) {\n      Entry<?, ?> that = (Entry<?, ?>) object;\n      return Objects.equals(this.getKey(), that.getKey())\n          && Objects.equals(this.getValue(), that.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int hashCode() {\n    K k = getKey();\n    V v = getValue();\n    final int a = 1;\n    final int b = -1;\n    final int c = 1;\n    final int d = -1;\n    return ((k == null) ? (a + b) : k.hashCode()) ^ ((v == null) ? (c + d) : v.hashCode());\n  }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override\n  public String toString() {\n    return getKey() + \"=\" + getValue();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "cda1533edf693f30506cc445d48e46b7679c17e39f44ce50d7972555e8c182f2", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 57, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__AbstractMapEntry__c343d31d.java", "order": 11, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 2, "intermediate_variables_introduced": 4, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-8096c343d31d-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 362, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a592b3c61958-I12", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K getKey();\n\n  @Override\n  @ParametricNullness\n  public abstract V getValue();\n\n  @Override\n  @ParametricNullness\n  public V setValue(@ParametricNullness V value) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean equals(@Nullable Object object) {\n    if (object instanceof Entry) {\n      Entry<?, ?> that = (Entry<?, ?>) object;\n      return Objects.equals(this.getKey(), that.getKey())\n          && Objects.equals(this.getValue(), that.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int hashCode() {\n    K k = getKey();\n    V v = getValue();\n    return ((k == null) ? 0 : k.hashCode()) ^ ((v == null) ? 0 : v.hashCode());\n  }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override\n  public String toString() {\n    return getKey() + \"=\" + getValue();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 53, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__AbstractMapEntry__b3c61958.java", "order": 12, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-a592b3c61958-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 363, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9ee72f22b107-I13", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map.Entry;\nimport java.util.Objects;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of the {@code equals}, {@code hashCode}, and {@code toString} methods of {@code\n * Entry}.\n *\n * @author Jared Levy\n */\n@GwtCompatible\nabstract class AbstractMapEntry<K extends @Nullable Object, V extends @Nullable Object>\n    implements Entry<K, V> {\n\n  @Override\n  @ParametricNullness\n  public abstract K getKey();\n\n  @Override\n  @ParametricNullness\n  public abstract V getValue();\n\n  @Override\n  @ParametricNullness\n  public V setValue(@ParametricNullness V value) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public boolean equals(@Nullable Object object) {\n    if (object instanceof Entry) {\n      Entry<?, ?> that = (Entry<?, ?>) object;\n      return Objects.equals(this.getKey(), that.getKey())\n          && Objects.equals(this.getValue(), that.getValue());\n    }\n    return false;\n  }\n\n  @Override\n  public int hashCode() {\n    K k = getKey();\n    V v = getValue();\n    return ((k == null) ? 0 : k.hashCode()) ^ ((v == null) ? 0 : v.hashCode());\n  }\n\n  /** Returns a string representation of the form {@code {key}={value}}. */\n  @Override\n  public String toString() {\n    return getKey() + \"=\" + getValue();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__AbstractMapEntry__34e6bafe.java", "base_sample_id": "source-aa4aede9e84b200d", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/AbstractMapEntry.java", "interference": "lower-for-to-while", "level": 13, "line_count": 53, "local_path": "control-flow/lower-for-to-while/I13__google-guava__AbstractMapEntry__2f22b107.java", "order": 13, "original_content_sha256": "2b9555b0899b0292e4a71a076806c36f8bf495a390ca76865b63a439a31ef9b3", "parent_variant_id": "int-6c6134e6bafe-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/AbstractMapEntry.java#L24-L70", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "AbstractMapEntry", "variant_id": "int-9ee72f22b107-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 364, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-909cbe08b7af-SRC", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {}\n\n  /** Begins a new chained comparison statement. See example in the class documentation. */\n  public static ComparisonChain start() {\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override\n        public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n          return classify(((Comparable<Object>) left).compareTo(right));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain compare(\n            @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n          return classify(comparator.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(int left, int right) {\n          return classify(Integer.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(long left, long right) {\n          return classify(Long.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(float left, float right) {\n          return classify(Float.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(double left, double right) {\n          return classify(Double.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(right, left)); // reversed\n        }\n\n        @Override\n        public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(left, right));\n        }\n\n        ComparisonChain classify(int result) {\n          return (result < 0) ? LESS : (result > 0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int result() {\n          return 0;\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int result) {\n      this.result = result;\n    }\n\n    @Override\n    public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain compare(\n        @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(int left, int right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(long left, long right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(float left, float right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(double left, double right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public int result() {\n      return result;\n    }\n  }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */\n  public abstract ComparisonChain compare(Comparable<?> left, Comparable<?> right);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain compare(\n      @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(int left, int right);\n\n  /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(long left, long right);\n\n  /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(float left, float right);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(double left, double right);\n\n  /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain compare(Boolean left, Boolean right) {\n    return compareFalseFirst(left, right);\n  }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain compareTrueFirst(boolean left, boolean right);\n\n  /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain compareFalseFirst(boolean left, boolean right);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int result();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": null, "level": 0, "line_count": 291, "local_path": "source-original/SRC__google-guava__ComparisonChain__be08b7af.java", "order": 0, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-909cbe08b7af-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 393, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-382a2d9faa4e-I01", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {}\n\n   \n  public static ComparisonChain start() {\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\")  \n        @Override\n        public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n          return classify(((Comparable<Object>) left).compareTo(right));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain compare(\n            @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n          return classify(comparator.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(int left, int right) {\n          return classify(Integer.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(long left, long right) {\n          return classify(Long.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(float left, float right) {\n          return classify(Float.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(double left, double right) {\n          return classify(Double.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(right, left));  \n        }\n\n        @Override\n        public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(left, right));\n        }\n\n        ComparisonChain classify(int result) {\n          return (result < 0) ? LESS : (result > 0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int result() {\n          return 0;\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int result) {\n      this.result = result;\n    }\n\n    @Override\n    public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain compare(\n        @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(int left, int right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(long left, long right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(float left, float right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(double left, double right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public int result() {\n      return result;\n    }\n  }\n\n  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  public abstract ComparisonChain compare(Comparable<?> left, Comparable<?> right);\n\n  \n\n\n\n  public abstract <T extends @Nullable Object> ComparisonChain compare(\n      @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);\n\n  \n\n\n\n  public abstract ComparisonChain compare(int left, int right);\n\n  \n\n\n\n  public abstract ComparisonChain compare(long left, long right);\n\n  \n\n\n\n  public abstract ComparisonChain compare(float left, float right);\n\n  \n\n\n\n  public abstract ComparisonChain compare(double left, double right);\n\n  \n\n\n\n\n\n\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain compare(Boolean left, Boolean right) {\n    return compareFalseFirst(left, right);\n  }\n\n  \n\n\n\n\n\n\n\n\n\n\n\n  public abstract ComparisonChain compareTrueFirst(boolean left, boolean right);\n\n  \n\n\n\n\n\n\n\n\n\n\n\n  public abstract ComparisonChain compareFalseFirst(boolean left, boolean right);\n\n  \n\n\n\n  public abstract int result();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "7dbbd5c689d5e4739463c255022a45c73a9a27a159a7e61fd270a2511d309313", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "remove-comments", "level": 1, "line_count": 291, "local_path": "comments/remove-comments/I01__google-guava__ComparisonChain__2d9faa4e.java", "order": 1, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 6223, "comments_removed": 14}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-382a2d9faa4e-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 394, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-77dcb9862314-I02", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {}\n\n  /** Begins a new chained comparison statement. See example in the class documentation. */\n  public static ComparisonChain sta() {\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override\n        public ComparisonChain com(Comparable<?> lef, Comparable<?> rig) {\n          return cla(((Comparable<Object>) lef).compareTo(rig));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain com(\n            @ParametricNullness T lef2, @ParametricNullness T rig2, Comparator<T> com2) {\n          return cla(com2.compare(lef2, rig2));\n        }\n\n        @Override\n        public ComparisonChain com(int lef3, int rig3) {\n          return cla(Integer.compare(lef3, rig3));\n        }\n\n        @Override\n        public ComparisonChain com(long lef4, long rig4) {\n          return cla(Long.compare(lef4, rig4));\n        }\n\n        @Override\n        public ComparisonChain com(float lef5, float rig5) {\n          return cla(Float.compare(lef5, rig5));\n        }\n\n        @Override\n        public ComparisonChain com(double lef6, double rig6) {\n          return cla(Double.compare(lef6, rig6));\n        }\n\n        @Override\n        public ComparisonChain compare(boolean lef7, boolean rig7) {\n          return cla(Boolean.compare(rig7, lef7)); // reversed\n        }\n\n        @Override\n        public ComparisonChain compare2(boolean lef8, boolean rig8) {\n          return cla(Boolean.compare(lef8, rig8));\n        }\n\n        ComparisonChain cla(int res) {\n          return (res < 0) ? LESS : (res > 0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int res() {\n          return 0;\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int res2) {\n      this.result = res2;\n    }\n\n    @Override\n    public ComparisonChain com(Comparable<?> lef9, Comparable<?> rig9) {\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain com(\n        @ParametricNullness T lef10, @ParametricNullness T rig10, Comparator<T> com3) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain com(int lef11, int rig11) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain com(long lef12, long rig12) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain com(float lef13, float rig13) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain com(double lef14, double rig14) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(boolean lef15, boolean rig15) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare2(boolean lef16, boolean rig16) {\n      return this;\n    }\n\n    @Override\n    public int res() {\n      return result;\n    }\n  }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */\n  public abstract ComparisonChain com(Comparable<?> lef17, Comparable<?> rig17);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain com(\n      @ParametricNullness T lef18, @ParametricNullness T rig18, Comparator<T> com4);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain com(int lef19, int rig19);\n\n  /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain com(long lef20, long rig20);\n\n  /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain com(float lef21, float rig21);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain com(double lef22, double rig22);\n\n  /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain com(Boolean lef23, Boolean rig23) {\n    return compare2(lef23, rig23);\n  }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain compare(boolean lef24, boolean rig24);\n\n  /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain compare2(boolean lef25, boolean rig25);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int res();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "dbc432c2232707f47a0ebfa3117a9688e19fcb5fc9124d0e97ff04121308b011", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "shorten-identifiers", "level": 2, "line_count": 291, "local_path": "identifiers/shorten-identifiers/I02__google-guava__ComparisonChain__b9862314.java", "order": 2, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 22, "identifiers_declared": 55, "local_name_collisions_avoided": 52, "method_calls_renamed": 9, "method_declarations_renamed": 30, "method_name_collisions_avoided": 2, "method_name_groups": 10}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-77dcb9862314-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 395, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d40fe0095e28-I03", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {}\n\n  /** Begins a new chained comparison statement. See example in the class documentation. */\n  public static ComparisonChain route() {\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override\n        public ComparisonChain receive(Comparable<?> flag, Comparable<?> event) {\n          return readItem(((Comparable<Object>) flag).compareTo(event));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain receive(\n            @ParametricNullness T step, @ParametricNullness T cache, Comparator<T> secureData) {\n          return readItem(secureData.compare(step, cache));\n        }\n\n        @Override\n        public ComparisonChain receive(int size, int value) {\n          return readItem(Integer.compare(size, value));\n        }\n\n        @Override\n        public ComparisonChain receive(long data, long price) {\n          return readItem(Long.compare(data, price));\n        }\n\n        @Override\n        public ComparisonChain receive(float user, float batch) {\n          return readItem(Float.compare(user, batch));\n        }\n\n        @Override\n        public ComparisonChain receive(double date, double state) {\n          return readItem(Double.compare(date, state));\n        }\n\n        @Override\n        public ComparisonChain validateBalance(boolean path, boolean entry) {\n          return readItem(Boolean.compare(entry, path)); // reversed\n        }\n\n        @Override\n        public ComparisonChain validateRequest(boolean node, boolean limit) {\n          return readItem(Boolean.compare(node, limit));\n        }\n\n        ComparisonChain readItem(int option) {\n          return (option < 0) ? LESS : (option > 0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int attach() {\n          return 0;\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int target) {\n      this.result = target;\n    }\n\n    @Override\n    public ComparisonChain prepare(Comparable<?> mode, Comparable<?> index) {\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain prepare(\n        @ParametricNullness T item, @ParametricNullness T group, Comparator<T> finalCache) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain prepare(int token, int order) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain prepare(long score, long total) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain prepare(float age, float count) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain prepare(double key, double result) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain validateBalance(boolean map, boolean client) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain validateMessage(boolean amount, boolean region) {\n      return this;\n    }\n\n    @Override\n    public int export() {\n      return result;\n    }\n  }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */\n  public abstract ComparisonChain receive(Comparable<?> window, Comparable<?> buffer);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain receive(\n      @ParametricNullness T status, @ParametricNullness T offset, Comparator<T> remoteMode);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain receive(int config, int source);\n\n  /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain receive(long nextKey, long invoice);\n\n  /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain receive(float balance, float session);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain receive(double message, double version);\n\n  /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain receive(Boolean address, Boolean summary) {\n    return validateRequest(address, summary);\n  }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain validateBalance(boolean request, boolean profile);\n\n  /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain validateRequest(boolean context, boolean feature);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int attach();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "60b7b230564fec634aa055cbaa206c7e6367349bf8878e583f452b949c4a0ed5", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "mislead-identifiers", "level": 3, "line_count": 291, "local_path": "identifiers/mislead-identifiers/I03__google-guava__ComparisonChain__e0095e28.java", "order": 3, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 22, "identifiers_declared": 55, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 810, "local_exact_length_matches": 28, "local_random_pool_selections": 55, "local_total_length_difference": 49, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 9, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 1, "method_declarations_renamed": 30, "method_exact_length_matches": 6, "method_name_groups": 10, "method_random_pool_selections": 10, "method_total_length_difference": 6}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-d40fe0095e28-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 396, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ef5bdef67f28-I04", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {}\n\n  /** Begins a new chained comparison statement. See example in the class documentation. */\n  public static ComparisonChain a() {\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override\n        public ComparisonChain b(Comparable<?> a, Comparable<?> b) {\n          return e(((Comparable<Object>) a).compareTo(b));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain b(\n            @ParametricNullness T c, @ParametricNullness T d, Comparator<T> e) {\n          return e(e.compare(c, d));\n        }\n\n        @Override\n        public ComparisonChain b(int f, int g) {\n          return e(Integer.compare(f, g));\n        }\n\n        @Override\n        public ComparisonChain b(long h, long i) {\n          return e(Long.compare(h, i));\n        }\n\n        @Override\n        public ComparisonChain b(float j, float k) {\n          return e(Float.compare(j, k));\n        }\n\n        @Override\n        public ComparisonChain b(double l, double m) {\n          return e(Double.compare(l, m));\n        }\n\n        @Override\n        public ComparisonChain c(boolean n, boolean o) {\n          return e(Boolean.compare(o, n)); // reversed\n        }\n\n        @Override\n        public ComparisonChain d(boolean p, boolean q) {\n          return e(Boolean.compare(p, q));\n        }\n\n        ComparisonChain e(int r) {\n          return (r < 0) ? LESS : (r > 0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int f() {\n          return 0;\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int s) {\n      this.result = s;\n    }\n\n    @Override\n    public ComparisonChain a(Comparable<?> t, Comparable<?> u) {\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain a(\n        @ParametricNullness T v, @ParametricNullness T w, Comparator<T> x) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain a(int y, int z) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain a(long A, long B) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain a(float C, float D) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain a(double E, double F) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain b(boolean G, boolean H) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain c(boolean I, boolean J) {\n      return this;\n    }\n\n    @Override\n    public int d() {\n      return result;\n    }\n  }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */\n  public abstract ComparisonChain b(Comparable<?> K, Comparable<?> L);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain b(\n      @ParametricNullness T M, @ParametricNullness T N, Comparator<T> O);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain b(int P, int Q);\n\n  /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain b(long R, long S);\n\n  /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain b(float T, float U);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain b(double V, double W);\n\n  /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain b(Boolean X, Boolean Y) {\n    return d(X, Y);\n  }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain c(boolean Z, boolean aa);\n\n  /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain d(boolean ab, boolean ac);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int f();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e39211d20e8a4a34e8fdae548709edfbbefc3cdf9707accb620c2e5b96295312", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "garble-identifiers", "level": 4, "line_count": 291, "local_path": "identifiers/garble-identifiers/I04__google-guava__ComparisonChain__def67f28.java", "order": 4, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 22, "identifiers_declared": 55, "local_name_collisions_avoided": 0, "method_calls_renamed": 9, "method_declarations_renamed": 30, "method_name_collisions_avoided": 0, "method_name_groups": 10}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-ef5bdef67f28-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 397, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5555458aab9c-I05", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {}\n\n  /** Begins a new chained comparison statement. See example in the class documentation. */\n  public static ComparisonChain start() {\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override\n        public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n          return classify(((Comparable<Object>) left).compareTo(right));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain compare(\n            @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n          return classify(comparator.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(int left, int right) {\n          return classify(Integer.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(long left, long right) {\n          return classify(Long.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(float left, float right) {\n          return classify(Float.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(double left, double right) {\n          return classify(Double.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(right, left)); // reversed\n        }\n\n        @Override\n        public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(left, right));\n        }\n\n        ComparisonChain classify(int result) {\n          return (result < 0x0) ? LESS : (result > 0x0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int result() {\n          return 0x0;\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-0x1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(0x1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int result) {\n      this.result = result;\n    }\n\n    @Override\n    public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain compare(\n        @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(int left, int right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(long left, long right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(float left, float right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(double left, double right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public int result() {\n      return result;\n    }\n  }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */\n  public abstract ComparisonChain compare(Comparable<?> left, Comparable<?> right);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain compare(\n      @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(int left, int right);\n\n  /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(long left, long right);\n\n  /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(float left, float right);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(double left, double right);\n\n  /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain compare(Boolean left, Boolean right) {\n    return compareFalseFirst(left, right);\n  }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain compareTrueFirst(boolean left, boolean right);\n\n  /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain compareFalseFirst(boolean left, boolean right);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int result();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "13d42ad1a3b9d6617e23576289008a5f707e12a9d3546814cfd1f1674bb926d0", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "encode-integer-literals", "level": 5, "line_count": 291, "local_path": "expressions/encode-integer-literals/I05__google-guava__ComparisonChain__458aab9c.java", "order": 5, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 5}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-5555458aab9c-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 398, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-59d895822fcb-I06", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {}\n\n  /** Begins a new chained comparison statement. See example in the class documentation. */\n  public static ComparisonChain start() {\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override\n        public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n          return classify(((Comparable<Object>) left).compareTo(right));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain compare(\n            @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n          return classify(comparator.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(int left, int right) {\n          return classify(Integer.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(long left, long right) {\n          return classify(Long.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(float left, float right) {\n          return classify(Float.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(double left, double right) {\n          return classify(Double.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(right, left)); // reversed\n        }\n\n        @Override\n        public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(left, right));\n        }\n\n        ComparisonChain classify(int result) {\n          return (result < 0) ? LESS : (result > 0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int result() {\n          return 0;\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int result) {\n      this.result = result;\n    }\n\n    @Override\n    public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain compare(\n        @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(int left, int right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(long left, long right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(float left, float right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(double left, double right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public int result() {\n      return result;\n    }\n  }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */\n  public abstract ComparisonChain compare(Comparable<?> left, Comparable<?> right);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain compare(\n      @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(int left, int right);\n\n  /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(long left, long right);\n\n  /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(float left, float right);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(double left, double right);\n\n  /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain compare(Boolean left, Boolean right) {\n    return compareFalseFirst(left, right);\n  }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain compareTrueFirst(boolean left, boolean right);\n\n  /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain compareFalseFirst(boolean left, boolean right);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int result();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "invert-conditions", "level": 6, "line_count": 291, "local_path": "expressions/invert-conditions/I06__google-guava__ComparisonChain__95822fcb.java", "order": 6, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-59d895822fcb-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 399, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a13a087ac7f0-I07", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {\nif (((0x5CE ^ 0x5CE) != 0)) { throw new AssertionError(); }\n}\n\n  /** Begins a new chained comparison statement. See example in the class documentation. */\n  public static ComparisonChain start() {\nif (((0x6E4B ^ 0x6E4B) != 0)) { throw new AssertionError(); }\n\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override\n        public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\nif (((0xBA47 ^ 0xBA47) != 0)) { throw new AssertionError(); }\n\n          return classify(((Comparable<Object>) left).compareTo(right));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain compare(\n            @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\nif (((0xCDE5 ^ 0xCDE5) != 0)) { throw new AssertionError(); }\n\n          return classify(comparator.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(int left, int right) {\nif (((0xC573 ^ 0xC573) != 0)) { throw new AssertionError(); }\n\n          return classify(Integer.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(long left, long right) {\nif (((0x2248 ^ 0x2248) != 0)) { throw new AssertionError(); }\n\n          return classify(Long.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(float left, float right) {\nif (((0xCA ^ 0xCA) != 0)) { throw new AssertionError(); }\n\n          return classify(Float.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(double left, double right) {\nif (((0x6649 ^ 0x6649) != 0)) { throw new AssertionError(); }\n\n          return classify(Double.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compareTrueFirst(boolean left, boolean right) {\nif (((0x79DB ^ 0x79DB) != 0)) { throw new AssertionError(); }\n\n          return classify(Boolean.compare(right, left)); // reversed\n        }\n\n        @Override\n        public ComparisonChain compareFalseFirst(boolean left, boolean right) {\nif (((0x358D ^ 0x358D) != 0)) { throw new AssertionError(); }\n\n          return classify(Boolean.compare(left, right));\n        }\n\n        ComparisonChain classify(int result) {\nif (((0xCF24 ^ 0xCF24) != 0)) { throw new AssertionError(); }\n\n          return (result < 0) ? LESS : (result > 0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int result() {\nif (((0x3005 ^ 0x3005) != 0)) { throw new AssertionError(); }\n\n          return 0;\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int result) {\nif (((0x3873 ^ 0x3873) != 0)) { throw new AssertionError(); }\n\n      this.result = result;\n    }\n\n    @Override\n    public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\nif (((0xFB20 ^ 0xFB20) != 0)) { throw new AssertionError(); }\n\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain compare(\n        @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\nif (((0xF04A ^ 0xF04A) != 0)) { throw new AssertionError(); }\n\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(int left, int right) {\nif (((0xEDBA ^ 0xEDBA) != 0)) { throw new AssertionError(); }\n\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(long left, long right) {\nif (((0x2B3C ^ 0x2B3C) != 0)) { throw new AssertionError(); }\n\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(float left, float right) {\nif (((0xB99 ^ 0xB99) != 0)) { throw new AssertionError(); }\n\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(double left, double right) {\nif (((0x1A17 ^ 0x1A17) != 0)) { throw new AssertionError(); }\n\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareTrueFirst(boolean left, boolean right) {\nif (((0x2A84 ^ 0x2A84) != 0)) { throw new AssertionError(); }\n\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareFalseFirst(boolean left, boolean right) {\nif (((0x5F24 ^ 0x5F24) != 0)) { throw new AssertionError(); }\n\n      return this;\n    }\n\n    @Override\n    public int result() {\nif (((0x3143 ^ 0x3143) != 0)) { throw new AssertionError(); }\n\n      return result;\n    }\n  }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */\n  public abstract ComparisonChain compare(Comparable<?> left, Comparable<?> right);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain compare(\n      @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(int left, int right);\n\n  /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(long left, long right);\n\n  /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(float left, float right);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(double left, double right);\n\n  /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain compare(Boolean left, Boolean right) {\nif (((0x94EA ^ 0x94EA) != 0)) { throw new AssertionError(); }\n\n    return compareFalseFirst(left, right);\n  }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain compareTrueFirst(boolean left, boolean right);\n\n  /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain compareFalseFirst(boolean left, boolean right);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int result();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "71f34aa478cd21295dc466cd4304fbd69953a03fbb57ee0f31f9fbf2bf7b669e", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "insert-dead-branches", "level": 7, "line_count": 337, "local_path": "code-injection/insert-dead-branches/I07__google-guava__ComparisonChain__087ac7f0.java", "order": 7, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 23}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-a13a087ac7f0-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 400, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7cb2142b4e66-I08", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {}\n\n  /** Begins a new chained comparison statement. See example in the class documentation. */\n  public static ComparisonChain start() {\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override\n        public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n          return classify(((Comparable<Object>) left).compareTo(right));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain compare(\n            @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n          return classify(comparator.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(int left, int right) {\n          return classify(Integer.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(long left, long right) {\n          return classify(Long.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(float left, float right) {\n          return classify(Float.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(double left, double right) {\n          return classify(Double.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(right, left)); // reversed\n        }\n\n        @Override\n        public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(left, right));\n        }\n\n        ComparisonChain classify(int result) {\n          return (result < 0) ? LESS : (result > 0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int result() {\n          return 0;\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int result) {\n      this.result = result;\n    }\n\n    @Override\n    public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain compare(\n        @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(int left, int right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(long left, long right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(float left, float right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(double left, double right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n{\n  int startingPosition = 2;\n  int endingPosition = 9;\n  int travelDistance = endingPosition - startingPosition;\n  if (travelDistance < 0) {\n    travelDistance = -travelDistance;\n  }\n}\n\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public int result() {\n      return result;\n    }\n  }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */\n  public abstract ComparisonChain compare(Comparable<?> left, Comparable<?> right);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain compare(\n      @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(int left, int right);\n\n  /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(long left, long right);\n\n  /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(float left, float right);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(double left, double right);\n\n  /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain compare(Boolean left, Boolean right) {\n    return compareFalseFirst(left, right);\n  }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain compareTrueFirst(boolean left, boolean right);\n\n  /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain compareFalseFirst(boolean left, boolean right);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int result();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "2e505e1b168170159143ee7b50796e3cd410641e0d82bdc801ac9fa67bcdaa96", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 300, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__ComparisonChain__142b4e66.java", "order": 8, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 9}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-7cb2142b4e66-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 401, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c348968f97a8-I09", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {}\n\n  /** Begins a new chained comparison statement. See example in the class documentation. */\n  public static ComparisonChain start() {\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override\n        public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n          return classify(((Comparable<Object>) left).compareTo(right));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain compare(\n            @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n          return classify(comparator.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(int left, int right) {\n          return classify(Integer.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(long left, long right) {\n          return classify(Long.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(float left, float right) {\n          return classify(Float.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(double left, double right) {\n          return classify(Double.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(right, left)); // reversed\n        }\n\n        @Override\n        public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(left, right));\n        }\n\n        ComparisonChain classify(int result) {\n          return (result < 0) ? LESS : (result > 0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int result() {\n          return 0;\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int result) {\n      this.result = result;\n    }\n\n    @Override\n    public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain compare(\n        @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(int left, int right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(long left, long right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(float left, float right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(double left, double right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public int result() {\n{int lI0O_dbf8ceba=0xAD6D;lI0O_dbf8ceba=((lI0O_dbf8ceba^0xAD6D)|0)&-1;if(((lI0O_dbf8ceba&1)==1)){lI0O_dbf8ceba^=lI0O_dbf8ceba;}}\n\n      return result;\n    }\n  }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */\n  public abstract ComparisonChain compare(Comparable<?> left, Comparable<?> right);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain compare(\n      @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(int left, int right);\n\n  /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(long left, long right);\n\n  /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(float left, float right);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(double left, double right);\n\n  /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain compare(Boolean left, Boolean right) {\n    return compareFalseFirst(left, right);\n  }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain compareTrueFirst(boolean left, boolean right);\n\n  /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain compareFalseFirst(boolean left, boolean right);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int result();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "04a1ee0e3c312241e9df45d236b79332c1381c886adcc60cef30371de9e9e518", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 293, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__ComparisonChain__968f97a8.java", "order": 9, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-c348968f97a8-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 402, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d3f97753e91a-I10", "source": "package com.google.common.collect; import com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator; import org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain { private ComparisonChain() {} /** Begins a new chained comparison statement. See example in the class documentation. */ public static ComparisonChain start() { return ACTIVE; }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() { @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n          return classify(((Comparable<Object>) left).compareTo(right));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain compare(\n            @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n          return classify(comparator.compare(left, right));\n        } @Override\n        public ComparisonChain compare(int left, int right) { return classify(Integer.compare(left, right)); }\n\n        @Override public ComparisonChain compare(long left, long right) { return classify(Long.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(float left, float right) { return classify(Float.compare(left, right));\n        } @Override public ComparisonChain compare(double left, double right) {\n          return classify(Double.compare(left, right)); }\n\n        @Override\n        public ComparisonChain compareTrueFirst(boolean left, boolean right) { return classify(Boolean.compare(right, left)); // reversed\n        }\n\n        @Override\n        public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(left, right));\n        }\n\n        ComparisonChain classify(int result) { return (result < 0) ? LESS : (result > 0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int result() {\n          return 0;\n        } };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1); private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int result) {\n      this.result = result; } @Override public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n      return this;\n    } @Override public <T extends @Nullable Object> ComparisonChain compare(\n        @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) { return this;\n    }\n\n    @Override public ComparisonChain compare(int left, int right) {\n      return this; }\n\n    @Override\n    public ComparisonChain compare(long left, long right) {\n      return this;\n    }\n\n    @Override public ComparisonChain compare(float left, float right) { return this;\n    } @Override\n    public ComparisonChain compare(double left, double right) { return this;\n    }\n\n    @Override\n    public ComparisonChain compareTrueFirst(boolean left, boolean right) { return this;\n    } @Override\n    public ComparisonChain compareFalseFirst(boolean left, boolean right) { return this;\n    } @Override\n    public int result() {\n      return result;\n    } }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */ public abstract ComparisonChain compare(Comparable<?> left, Comparable<?> right);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain compare( @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */ public abstract ComparisonChain compare(int left, int right); /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */ public abstract ComparisonChain compare(long left, long right); /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(float left, float right);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */ public abstract ComparisonChain compare(double left, double right); /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated public final ComparisonChain compare(Boolean left, Boolean right) {\n    return compareFalseFirst(left, right); }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain compareTrueFirst(boolean left, boolean right); /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain compareFalseFirst(boolean left, boolean right);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int result();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "f07337f36d24901e2695b4241b83730ed34b0119c981b70cc70f45f4177eec5a", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "partially-compact-layout", "level": 10, "line_count": 228, "local_path": "layout/partially-compact-layout/I10__google-guava__ComparisonChain__7753e91a.java", "order": 10, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 126, "line_break_groups_removed": 50, "line_breaks_removed": 63, "whitespace_characters_removed": 249}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-d3f97753e91a-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 403, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7a520feee2d7-I11", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {}\n\n  /** Begins a new chained comparison statement. See example in the class documentation. */\n  public static ComparisonChain start() {\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override\n        public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n          return classify(((Comparable<Object>) left).compareTo(right));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain compare(\n            @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n          return classify(comparator.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(int left, int right) {\n          return classify(Integer.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(long left, long right) {\n          return classify(Long.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(float left, float right) {\n          return classify(Float.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(double left, double right) {\n          return classify(Double.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(right, left)); // reversed\n        }\n\n        @Override\n        public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(left, right));\n        }\n\n        ComparisonChain classify(int result) {\n          final int a = 1;\n          final int b = -1;\n          final int c = 1;\n          final int d = -1;\n          return (result < (a + b)) ? LESS : (result > (c + d)) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int result() {\n          final int e = 1;\n          final int f = -1;\n          return (e + f);\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int result) {\n      this.result = result;\n    }\n\n    @Override\n    public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain compare(\n        @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(int left, int right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(long left, long right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(float left, float right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(double left, double right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public int result() {\n      return result;\n    }\n  }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */\n  public abstract ComparisonChain compare(Comparable<?> left, Comparable<?> right);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain compare(\n      @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(int left, int right);\n\n  /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(long left, long right);\n\n  /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(float left, float right);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(double left, double right);\n\n  /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain compare(Boolean left, Boolean right) {\n    return compareFalseFirst(left, right);\n  }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain compareTrueFirst(boolean left, boolean right);\n\n  /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain compareFalseFirst(boolean left, boolean right);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int result();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "680772db6cb646b0400fbc0312b741d575bca5b85dda012f09b0ed1c79e89168", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 297, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__ComparisonChain__0feee2d7.java", "order": 11, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 3, "intermediate_variables_introduced": 6, "statements_augmented": 2}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-7a520feee2d7-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 404, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4ad78ab8cdf0-I12", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {}\n\n  /** Begins a new chained comparison statement. See example in the class documentation. */\n  public static ComparisonChain start() {\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override\n        public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n          return classify(((Comparable<Object>) left).compareTo(right));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain compare(\n            @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n          return classify(comparator.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(int left, int right) {\n          return classify(Integer.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(long left, long right) {\n          return classify(Long.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(float left, float right) {\n          return classify(Float.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(double left, double right) {\n          return classify(Double.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(right, left)); // reversed\n        }\n\n        @Override\n        public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(left, right));\n        }\n\n        ComparisonChain classify(int result) {\n          return (result < 0) ? LESS : (result > 0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int result() {\n          return 0;\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int result) {\n      this.result = result;\n    }\n\n    @Override\n    public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain compare(\n        @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(int left, int right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(long left, long right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(float left, float right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(double left, double right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public int result() {\n      return result;\n    }\n  }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */\n  public abstract ComparisonChain compare(Comparable<?> left, Comparable<?> right);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain compare(\n      @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(int left, int right);\n\n  /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(long left, long right);\n\n  /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(float left, float right);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(double left, double right);\n\n  /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain compare(Boolean left, Boolean right) {\n    return compareFalseFirst(left, right);\n  }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain compareTrueFirst(boolean left, boolean right);\n\n  /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain compareFalseFirst(boolean left, boolean right);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int result();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 291, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__ComparisonChain__8ab8cdf0.java", "order": 12, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-4ad78ab8cdf0-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 405, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-70ad67f47cc0-I13", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.primitives.Booleans;\nimport com.google.errorprone.annotations.InlineMe;\nimport java.util.Comparator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A utility for performing a chained comparison statement. <b>Note:</b> Java 8+ users should\n * generally prefer the methods in {@link Comparator}; see <a href=\"#java8\">below</a>.\n *\n * <p>Example usage of {@code ComparisonChain}:\n *\n * {@snippet :\n * public int compareTo(Foo that) {\n *   return ComparisonChain.start()\n *       .compare(this.aString, that.aString)\n *       .compare(this.anInt, that.anInt)\n *       .compare(this.anEnum, that.anEnum, Ordering.natural().nullsLast())\n *       .result();\n * }\n * }\n *\n * <p>The value of this expression will have the same sign as the <i>first nonzero</i> comparison\n * result in the chain, or will be zero if every comparison result was zero.\n *\n * <p><b>Note:</b> {@code ComparisonChain} instances are <b>immutable</b>. For this utility to work\n * correctly, calls must be chained as illustrated above.\n *\n * <p>Performance note: Even though the {@code ComparisonChain} caller always invokes its {@code\n * compare} methods unconditionally, the {@code ComparisonChain} implementation stops calling its\n * inputs' {@link Comparable#compareTo compareTo} and {@link Comparator#compare compare} methods as\n * soon as one of them returns a nonzero result. This optimization is typically important only in\n * the presence of expensive {@code compareTo} and {@code compare} implementations.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CommonObjectUtilitiesExplained#comparecompareto\">{@code\n * ComparisonChain}</a>.\n *\n * <h4 id=\"java8\">Java 8+ equivalents</h4>\n *\n * If you are using Java version 8 or greater, you should generally use the static methods in {@link\n * Comparator} instead of {@code ComparisonChain}. The example above can be implemented like this:\n *\n * {@snippet :\n * import static java.util.Comparator.comparing;\n * import static java.util.Comparator.nullsLast;\n * import static java.util.Comparator.naturalOrder;\n *\n * ...\n *   private static final Comparator<Foo> COMPARATOR =\n *       comparing((Foo foo) -> foo.aString)\n *           .thenComparing(foo -> foo.anInt)\n *           .thenComparing(foo -> foo.anEnum, nullsLast(naturalOrder()));\n *\n *   @Override\n *   public int compareTo(Foo that) {\n *     return COMPARATOR.compare(this, that);\n *   }\n * }\n *\n * <p>With method references it is more succinct: {@code comparing(Foo::aString)} for example.\n *\n * <p>Using {@link Comparator} avoids certain types of bugs, for example when you meant to write\n * {@code .compare(a.foo, b.foo)} but you actually wrote {@code .compare(a.foo, a.foo)} or {@code\n * .compare(a.foo, b.bar)}. {@code ComparisonChain} also has a potential performance problem that\n * {@code Comparator} doesn't: it evaluates all the parameters of all the {@code .compare} calls,\n * even when the result of the comparison is already known from previous {@code .compare} calls.\n * That can be expensive.\n *\n * @author Mark Davis\n * @author Kevin Bourrillion\n * @since 2.0\n */\n@GwtCompatible\npublic abstract class ComparisonChain {\n  private ComparisonChain() {}\n\n  /** Begins a new chained comparison statement. See example in the class documentation. */\n  public static ComparisonChain start() {\n    return ACTIVE;\n  }\n\n  private static final ComparisonChain ACTIVE =\n      new ComparisonChain() {\n        @SuppressWarnings(\"unchecked\") // unsafe; see discussion on supertype\n        @Override\n        public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n          return classify(((Comparable<Object>) left).compareTo(right));\n        }\n\n        @Override\n        public <T extends @Nullable Object> ComparisonChain compare(\n            @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n          return classify(comparator.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(int left, int right) {\n          return classify(Integer.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(long left, long right) {\n          return classify(Long.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(float left, float right) {\n          return classify(Float.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compare(double left, double right) {\n          return classify(Double.compare(left, right));\n        }\n\n        @Override\n        public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(right, left)); // reversed\n        }\n\n        @Override\n        public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n          return classify(Boolean.compare(left, right));\n        }\n\n        ComparisonChain classify(int result) {\n          return (result < 0) ? LESS : (result > 0) ? GREATER : ACTIVE;\n        }\n\n        @Override\n        public int result() {\n          return 0;\n        }\n      };\n\n  private static final ComparisonChain LESS = new InactiveComparisonChain(-1);\n\n  private static final ComparisonChain GREATER = new InactiveComparisonChain(1);\n\n  private static final class InactiveComparisonChain extends ComparisonChain {\n    final int result;\n\n    InactiveComparisonChain(int result) {\n      this.result = result;\n    }\n\n    @Override\n    public ComparisonChain compare(Comparable<?> left, Comparable<?> right) {\n      return this;\n    }\n\n    @Override\n    public <T extends @Nullable Object> ComparisonChain compare(\n        @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(int left, int right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(long left, long right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(float left, float right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compare(double left, double right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareTrueFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public ComparisonChain compareFalseFirst(boolean left, boolean right) {\n      return this;\n    }\n\n    @Override\n    public int result() {\n      return result;\n    }\n  }\n\n  /**\n   * Compares two comparable objects as specified by {@link Comparable#compareTo}, <i>if</i> the\n   * result of this comparison chain has not already been determined.\n   *\n   * <p>This method is declared to accept any 2 {@code Comparable} objects, even if they are not <a\n   * href=\"https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html\">mutually\n   * comparable</a>. If you pass objects that are not mutually comparable, this method may throw an\n   * exception. (The reason for this decision is lost to time, but the reason <i>might</i> be that\n   * we wanted to support legacy classes that implement the raw type {@code Comparable} (instead of\n   * implementing {@code Comparable<Foo>}) without producing warnings. If so, we would prefer today\n   * to produce warnings in that case, and we may change this method to do so in the future. Support\n   * for raw {@code Comparable} types in Guava in general is tracked as <a\n   * href=\"https://github.com/google/guava/issues/989\">#989</a>.)\n   *\n   * @throws ClassCastException if the parameters are not mutually comparable\n   */\n  public abstract ComparisonChain compare(Comparable<?> left, Comparable<?> right);\n\n  /**\n   * Compares two objects using a comparator, <i>if</i> the result of this comparison chain has not\n   * already been determined.\n   */\n  public abstract <T extends @Nullable Object> ComparisonChain compare(\n      @ParametricNullness T left, @ParametricNullness T right, Comparator<T> comparator);\n\n  /**\n   * Compares two {@code int} values as specified by {@link Integer#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(int left, int right);\n\n  /**\n   * Compares two {@code long} values as specified by {@link Long#compare}, <i>if</i> the result of\n   * this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(long left, long right);\n\n  /**\n   * Compares two {@code float} values as specified by {@link Float#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(float left, float right);\n\n  /**\n   * Compares two {@code double} values as specified by {@link Double#compare}, <i>if</i> the result\n   * of this comparison chain has not already been determined.\n   */\n  public abstract ComparisonChain compare(double left, double right);\n\n  /**\n   * Discouraged synonym for {@link #compareFalseFirst}.\n   *\n   * @deprecated Use {@link #compareFalseFirst}; or, if the parameters passed are being either\n   *     negated or reversed, undo the negation or reversal and use {@link #compareTrueFirst}.\n   * @since 19.0\n   */\n  @InlineMe(replacement = \"this.compareFalseFirst(left, right)\")\n  @Deprecated\n  public final ComparisonChain compare(Boolean left, Boolean right) {\n    return compareFalseFirst(left, right);\n  }\n\n  /**\n   * Compares two {@code boolean} values, considering {@code true} to be less than {@code false},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#trueFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#trueFirst()})\n   * </pre>\n   *\n   * @since 12.0\n   */\n  public abstract ComparisonChain compareTrueFirst(boolean left, boolean right);\n\n  /**\n   * Compares two {@code boolean} values, considering {@code false} to be less than {@code true},\n   * <i>if</i> the result of this comparison chain has not already been determined.\n   *\n   * <p>Java 8+ users: you can get the equivalent from {@link Booleans#falseFirst()}. For example:\n   *\n   * <pre>\n   * Comparator.comparing(Foo::isBar, {@link Booleans#falseFirst()})\n   * </pre>\n   *\n   * @since 12.0 (present as {@code compare} since 2.0)\n   */\n  public abstract ComparisonChain compareFalseFirst(boolean left, boolean right);\n\n  /**\n   * Ends this comparison chain and returns its result: a value having the same sign as the first\n   * nonzero comparison result in the chain, or zero if every result was zero.\n   */\n  public abstract int result();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__ComparisonChain__be08b7af.java", "base_sample_id": "source-106cec4a4114faf8", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ComparisonChain.java", "interference": "lower-for-to-while", "level": 13, "line_count": 291, "local_path": "control-flow/lower-for-to-while/I13__google-guava__ComparisonChain__67f47cc0.java", "order": 13, "original_content_sha256": "bf6a5d8b65d5163d838a789f66eb7246966a6d723e7a2ee62dd6d9108cae8a33", "parent_variant_id": "int-909cbe08b7af-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ComparisonChain.java#L25-L308", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ComparisonChain", "variant_id": "int-70ad67f47cc0-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 406, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b2a9391e9b0a-SRC", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> forwardMultiset();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> comparator() {\n    Comparator<? super E> result = comparator;\n    if (result == null) {\n      result = Ordering.from(forwardMultiset().comparator()).reverse();\n      comparator = result;\n    }\n    return result;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    NavigableSet<E> result = elementSet;\n    if (result == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    return forwardMultiset().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    return forwardMultiset().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E toElement, BoundType boundType) {\n    return forwardMultiset().tailMultiset(toElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E fromElement,\n      BoundType fromBoundType,\n      @ParametricNullness E toElement,\n      BoundType toBoundType) {\n    return forwardMultiset()\n        .subMultiset(toElement, toBoundType, fromElement, fromBoundType)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E fromElement, BoundType boundType) {\n    return forwardMultiset().headMultiset(fromElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> delegate() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return forwardMultiset().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return forwardMultiset().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> entryIterator();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> entrySet() {\n    Set<Entry<E>> result = entrySet;\n    return (result == null) ? entrySet = createEntrySet() : result;\n  }\n\n  Set<Entry<E>> createEntrySet() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> multiset() {\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> iterator() {\n        return entryIterator();\n      }\n\n      @Override\n      public int size() {\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> iterator() {\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] toArray() {\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] toArray(T[] array) {\n    return standardToArray(array);\n  }\n\n  @Override\n  public String toString() {\n    return entrySet().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": null, "level": 0, "line_count": 147, "local_path": "source-original/SRC__google-guava__DescendingMultiset__391e9b0a.java", "order": 0, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-b2a9391e9b0a-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 421, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7e471a90a38a-I01", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> forwardMultiset();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> comparator() {\n    Comparator<? super E> result = comparator;\n    if (result == null) {\n      result = Ordering.from(forwardMultiset().comparator()).reverse();\n      comparator = result;\n    }\n    return result;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    NavigableSet<E> result = elementSet;\n    if (result == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    return forwardMultiset().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    return forwardMultiset().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E toElement, BoundType boundType) {\n    return forwardMultiset().tailMultiset(toElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E fromElement,\n      BoundType fromBoundType,\n      @ParametricNullness E toElement,\n      BoundType toBoundType) {\n    return forwardMultiset()\n        .subMultiset(toElement, toBoundType, fromElement, fromBoundType)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E fromElement, BoundType boundType) {\n    return forwardMultiset().headMultiset(fromElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> delegate() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return forwardMultiset().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return forwardMultiset().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> entryIterator();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> entrySet() {\n    Set<Entry<E>> result = entrySet;\n    return (result == null) ? entrySet = createEntrySet() : result;\n  }\n\n  Set<Entry<E>> createEntrySet() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> multiset() {\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> iterator() {\n        return entryIterator();\n      }\n\n      @Override\n      public int size() {\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> iterator() {\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] toArray() {\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\")  \n  public <T extends @Nullable Object> T[] toArray(T[] array) {\n    return standardToArray(array);\n  }\n\n  @Override\n  public String toString() {\n    return entrySet().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "5c728510ef61ec328094d74ae20dadd1866cc1825c246dedbe7ece1934bb500f", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "remove-comments", "level": 1, "line_count": 147, "local_path": "comments/remove-comments/I01__google-guava__DescendingMultiset__1a90a38a.java", "order": 1, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 213, "comments_removed": 2}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-7e471a90a38a-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 422, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-61d6c0d3c354-I02", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> forward();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> com() {\n    Comparator<? super E> res = comparator;\n    if (res == null) {\n      res = Ordering.from(forward().comparator()).reverse();\n      comparator = res;\n    }\n    return res;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> element() {\n    NavigableSet<E> res2 = elementSet;\n    if (res2 == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return res2;\n  }\n\n  @Override\n  public @Nullable Entry<E> poll() {\n    return forward().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> poll2() {\n    return forward().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> head(@ParametricNullness E to, BoundType bound) {\n    return forward().tailMultiset(to, bound).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> sub(\n      @ParametricNullness E from2,\n      BoundType from3,\n      @ParametricNullness E to2,\n      BoundType to3) {\n    return forward()\n        .subMultiset(to2, to3, from2, from3)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> tail(@ParametricNullness E from4, BoundType bound2) {\n    return forward().headMultiset(from4, bound2).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> del() {\n    return forward();\n  }\n\n  @Override\n  public SortedMultiset<E> descending() {\n    return forward();\n  }\n\n  @Override\n  public @Nullable Entry<E> first() {\n    return forward().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> last() {\n    return forward().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> entry();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> entry2() {\n    Set<Entry<E>> res3 = entrySet;\n    return (res3 == null) ? entrySet = create() : res3;\n  }\n\n  Set<Entry<E>> create() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> mul() {\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> ite() {\n        return entryIterator();\n      }\n\n      @Override\n      public int siz() {\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> ite() {\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] to() {\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] to(T[] arr) {\n    return standardToArray(arr);\n  }\n\n  @Override\n  public String to2() {\n    return entry2().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "961acb6d4c78b4a145f86a72aabd3cbc36c2862dc00b0330372276e6bf90340f", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "shorten-identifiers", "level": 2, "line_count": 147, "local_path": "identifiers/shorten-identifiers/I02__google-guava__DescendingMultiset__c0d3c354.java", "order": 2, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 17, "identifiers_declared": 12, "local_name_collisions_avoided": 8, "method_calls_renamed": 12, "method_declarations_renamed": 22, "method_name_collisions_avoided": 3, "method_name_groups": 21}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-61d6c0d3c354-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 423, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d601a4926919-I03", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> validateAccount();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> sendResult() {\n    Comparator<? super E> target = comparator;\n    if (target == null) {\n      target = Ordering.from(validateAccount().comparator()).reverse();\n      comparator = target;\n    }\n    return target;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> readResult() {\n    NavigableSet<E> offset = elementSet;\n    if (offset == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return offset;\n  }\n\n  @Override\n  public @Nullable Entry<E> refreshAddress() {\n    return validateAccount().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> validateOrder() {\n    return validateAccount().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> fetchBalance(@ParametricNullness E finalData, BoundType reference) {\n    return validateAccount().tailMultiset(finalData, reference).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> fetchStatus(\n      @ParametricNullness E sharedIndex,\n      BoundType cachedBalance,\n      @ParametricNullness E nextScore,\n      BoundType destination) {\n    return validateAccount()\n        .subMultiset(nextScore, destination, sharedIndex, cachedBalance)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> removeClient(@ParametricNullness E backupValue, BoundType timestamp) {\n    return validateAccount().headMultiset(backupValue, timestamp).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> saveNode() {\n    return validateAccount();\n  }\n\n  @Override\n  public SortedMultiset<E> validateAddress() {\n    return validateAccount();\n  }\n\n  @Override\n  public @Nullable Entry<E> sendBuffer() {\n    return validateAccount().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> saveIndex() {\n    return validateAccount().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> createRequest();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> sendItem() {\n    Set<Entry<E>> status = entrySet;\n    return (status == null) ? entrySet = refreshBalance() : status;\n  }\n\n  Set<Entry<E>> refreshBalance() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> sendData() {\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> readNode() {\n        return entryIterator();\n      }\n\n      @Override\n      public int stop() {\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> readUser() {\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] mapData() {\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] mapData(T[] group) {\n    return standardToArray(group);\n  }\n\n  @Override\n  public String sendPath() {\n    return sendItem().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "11b9d008f899f779ab15e966b37f6dc89d9ed34bc704c1cf45b24c51e7815018", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "mislead-identifiers", "level": 3, "line_count": 147, "local_path": "identifiers/mislead-identifiers/I03__google-guava__DescendingMultiset__a4926919.java", "order": 3, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 17, "identifiers_declared": 12, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 1, "local_exact_length_matches": 12, "local_random_pool_selections": 12, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 12, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 22, "method_exact_length_matches": 20, "method_name_groups": 21, "method_random_pool_selections": 21, "method_total_length_difference": 3}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-d601a4926919-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 424, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dc236b7e4e7d-I04", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> a();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> b() {\n    Comparator<? super E> a = comparator;\n    if (a == null) {\n      a = Ordering.from(a().comparator()).reverse();\n      comparator = a;\n    }\n    return a;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> c() {\n    NavigableSet<E> b = elementSet;\n    if (b == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return b;\n  }\n\n  @Override\n  public @Nullable Entry<E> d() {\n    return a().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> e() {\n    return a().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> f(@ParametricNullness E c, BoundType d) {\n    return a().tailMultiset(c, d).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> g(\n      @ParametricNullness E e,\n      BoundType f,\n      @ParametricNullness E g,\n      BoundType h) {\n    return a()\n        .subMultiset(g, h, e, f)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> h(@ParametricNullness E i, BoundType j) {\n    return a().headMultiset(i, j).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> i() {\n    return a();\n  }\n\n  @Override\n  public SortedMultiset<E> j() {\n    return a();\n  }\n\n  @Override\n  public @Nullable Entry<E> k() {\n    return a().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> l() {\n    return a().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> m();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> n() {\n    Set<Entry<E>> k = entrySet;\n    return (k == null) ? entrySet = o() : k;\n  }\n\n  Set<Entry<E>> o() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> a() {\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> b() {\n        return entryIterator();\n      }\n\n      @Override\n      public int c() {\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> p() {\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] q() {\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] q(T[] l) {\n    return standardToArray(l);\n  }\n\n  @Override\n  public String r() {\n    return n().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "494021f389146e067b20116e81482c92730e21efafb0cc47c28ca71438ddc6ed", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "garble-identifiers", "level": 4, "line_count": 147, "local_path": "identifiers/garble-identifiers/I04__google-guava__DescendingMultiset__6b7e4e7d.java", "order": 4, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 17, "identifiers_declared": 12, "local_name_collisions_avoided": 0, "method_calls_renamed": 12, "method_declarations_renamed": 22, "method_name_collisions_avoided": 0, "method_name_groups": 21}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-dc236b7e4e7d-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 425, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a2a8c9b274e5-I05", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> forwardMultiset();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> comparator() {\n    Comparator<? super E> result = comparator;\n    if (result == null) {\n      result = Ordering.from(forwardMultiset().comparator()).reverse();\n      comparator = result;\n    }\n    return result;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    NavigableSet<E> result = elementSet;\n    if (result == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    return forwardMultiset().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    return forwardMultiset().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E toElement, BoundType boundType) {\n    return forwardMultiset().tailMultiset(toElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E fromElement,\n      BoundType fromBoundType,\n      @ParametricNullness E toElement,\n      BoundType toBoundType) {\n    return forwardMultiset()\n        .subMultiset(toElement, toBoundType, fromElement, fromBoundType)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E fromElement, BoundType boundType) {\n    return forwardMultiset().headMultiset(fromElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> delegate() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return forwardMultiset().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return forwardMultiset().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> entryIterator();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> entrySet() {\n    Set<Entry<E>> result = entrySet;\n    return (result == null) ? entrySet = createEntrySet() : result;\n  }\n\n  Set<Entry<E>> createEntrySet() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> multiset() {\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> iterator() {\n        return entryIterator();\n      }\n\n      @Override\n      public int size() {\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> iterator() {\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] toArray() {\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] toArray(T[] array) {\n    return standardToArray(array);\n  }\n\n  @Override\n  public String toString() {\n    return entrySet().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "encode-integer-literals", "level": 5, "line_count": 147, "local_path": "expressions/encode-integer-literals/I05__google-guava__DescendingMultiset__c9b274e5.java", "order": 5, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-a2a8c9b274e5-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 426, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-baa407dca0c8-I06", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> forwardMultiset();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> comparator() {\n    Comparator<? super E> result = comparator;\n    if (!((result == null))) {} else {\n      result = Ordering.from(forwardMultiset().comparator()).reverse();\n      comparator = result;\n    }\n    return result;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    NavigableSet<E> result = elementSet;\n    if (!((result == null))) {} else {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    return forwardMultiset().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    return forwardMultiset().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E toElement, BoundType boundType) {\n    return forwardMultiset().tailMultiset(toElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E fromElement,\n      BoundType fromBoundType,\n      @ParametricNullness E toElement,\n      BoundType toBoundType) {\n    return forwardMultiset()\n        .subMultiset(toElement, toBoundType, fromElement, fromBoundType)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E fromElement, BoundType boundType) {\n    return forwardMultiset().headMultiset(fromElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> delegate() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return forwardMultiset().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return forwardMultiset().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> entryIterator();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> entrySet() {\n    Set<Entry<E>> result = entrySet;\n    return (result == null) ? entrySet = createEntrySet() : result;\n  }\n\n  Set<Entry<E>> createEntrySet() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> multiset() {\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> iterator() {\n        return entryIterator();\n      }\n\n      @Override\n      public int size() {\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> iterator() {\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] toArray() {\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] toArray(T[] array) {\n    return standardToArray(array);\n  }\n\n  @Override\n  public String toString() {\n    return entrySet().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "e8e7787e1d728c014f5b9e0aa749711a147a1623d0ab808687a81de2c5969af3", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "invert-conditions", "level": 6, "line_count": 147, "local_path": "expressions/invert-conditions/I06__google-guava__DescendingMultiset__07dca0c8.java", "order": 6, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-baa407dca0c8-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 427, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e936b3004815-I07", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> forwardMultiset();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> comparator() {\nif (((0x36D1 ^ 0x36D1) != 0)) { throw new AssertionError(); }\n\n    Comparator<? super E> result = comparator;\n    if (result == null) {\n      result = Ordering.from(forwardMultiset().comparator()).reverse();\n      comparator = result;\n    }\n    return result;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> elementSet() {\nif (((0x3501 ^ 0x3501) != 0)) { throw new AssertionError(); }\n\n    NavigableSet<E> result = elementSet;\n    if (result == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\nif (((0x5A3D ^ 0x5A3D) != 0)) { throw new AssertionError(); }\n\n    return forwardMultiset().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\nif (((0x4994 ^ 0x4994) != 0)) { throw new AssertionError(); }\n\n    return forwardMultiset().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E toElement, BoundType boundType) {\nif (((0x4B27 ^ 0x4B27) != 0)) { throw new AssertionError(); }\n\n    return forwardMultiset().tailMultiset(toElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E fromElement,\n      BoundType fromBoundType,\n      @ParametricNullness E toElement,\n      BoundType toBoundType) {\nif (((0xA937 ^ 0xA937) != 0)) { throw new AssertionError(); }\n\n    return forwardMultiset()\n        .subMultiset(toElement, toBoundType, fromElement, fromBoundType)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E fromElement, BoundType boundType) {\nif (((0xDBF2 ^ 0xDBF2) != 0)) { throw new AssertionError(); }\n\n    return forwardMultiset().headMultiset(fromElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> delegate() {\nif (((0x7876 ^ 0x7876) != 0)) { throw new AssertionError(); }\n\n    return forwardMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\nif (((0x1DCF ^ 0x1DCF) != 0)) { throw new AssertionError(); }\n\n    return forwardMultiset();\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\nif (((0x4A07 ^ 0x4A07) != 0)) { throw new AssertionError(); }\n\n    return forwardMultiset().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\nif (((0x5902 ^ 0x5902) != 0)) { throw new AssertionError(); }\n\n    return forwardMultiset().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> entryIterator();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> entrySet() {\nif (((0x7171 ^ 0x7171) != 0)) { throw new AssertionError(); }\n\n    Set<Entry<E>> result = entrySet;\n    return (result == null) ? entrySet = createEntrySet() : result;\n  }\n\n  Set<Entry<E>> createEntrySet() {\nif (((0x81C5 ^ 0x81C5) != 0)) { throw new AssertionError(); }\n\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> multiset() {\nif (((0x1076 ^ 0x1076) != 0)) { throw new AssertionError(); }\n\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> iterator() {\nif (((0x368A ^ 0x368A) != 0)) { throw new AssertionError(); }\n\n        return entryIterator();\n      }\n\n      @Override\n      public int size() {\nif (((0x3E25 ^ 0x3E25) != 0)) { throw new AssertionError(); }\n\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> iterator() {\nif (((0x3517 ^ 0x3517) != 0)) { throw new AssertionError(); }\n\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] toArray() {\nif (((0xFE60 ^ 0xFE60) != 0)) { throw new AssertionError(); }\n\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] toArray(T[] array) {\nif (((0xF6B2 ^ 0xF6B2) != 0)) { throw new AssertionError(); }\n\n    return standardToArray(array);\n  }\n\n  @Override\n  public String toString() {\nif (((0xB5B0 ^ 0xB5B0) != 0)) { throw new AssertionError(); }\n\n    return entrySet().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "61f9a52382f6287c5f8072da7cd15cc79f0911f95fa8072c13934a558e62b401", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "insert-dead-branches", "level": 7, "line_count": 187, "local_path": "code-injection/insert-dead-branches/I07__google-guava__DescendingMultiset__b3004815.java", "order": 7, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 20}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-e936b3004815-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 428, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3696c2ef764f-I08", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> forwardMultiset();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> comparator() {\n    Comparator<? super E> result = comparator;\n    if (result == null) {\n      result = Ordering.from(forwardMultiset().comparator()).reverse();\n      comparator = result;\n    }\n    return result;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    NavigableSet<E> result = elementSet;\n    if (result == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    return forwardMultiset().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    return forwardMultiset().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E toElement, BoundType boundType) {\n    return forwardMultiset().tailMultiset(toElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E fromElement,\n      BoundType fromBoundType,\n      @ParametricNullness E toElement,\n      BoundType toBoundType) {\n    return forwardMultiset()\n        .subMultiset(toElement, toBoundType, fromElement, fromBoundType)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E fromElement, BoundType boundType) {\n    return forwardMultiset().headMultiset(fromElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> delegate() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n{\n  int startingPosition = 2;\n  int endingPosition = 9;\n  int travelDistance = endingPosition - startingPosition;\n  if (travelDistance < 0) {\n    travelDistance = -travelDistance;\n  }\n}\n\n    return forwardMultiset();\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return forwardMultiset().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return forwardMultiset().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> entryIterator();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> entrySet() {\n    Set<Entry<E>> result = entrySet;\n    return (result == null) ? entrySet = createEntrySet() : result;\n  }\n\n  Set<Entry<E>> createEntrySet() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> multiset() {\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> iterator() {\n        return entryIterator();\n      }\n\n      @Override\n      public int size() {\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> iterator() {\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] toArray() {\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] toArray(T[] array) {\n    return standardToArray(array);\n  }\n\n  @Override\n  public String toString() {\n    return entrySet().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "213c73e7537b126cf16880516cfb280058f578b904bf4a225fbfa095b0f5441c", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 156, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__DescendingMultiset__c2ef764f.java", "order": 8, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 9}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-3696c2ef764f-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 429, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9bf5ef40ca0f-I09", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> forwardMultiset();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> comparator() {\n    Comparator<? super E> result = comparator;\n    if (result == null) {\n      result = Ordering.from(forwardMultiset().comparator()).reverse();\n      comparator = result;\n    }\n    return result;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    NavigableSet<E> result = elementSet;\n    if (result == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    return forwardMultiset().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    return forwardMultiset().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E toElement, BoundType boundType) {\n{boolean lI0O_88498ba8=((0xC5B7^0xC5B7)!=0);lI0O_88498ba8=!(!lI0O_88498ba8);}\n\n    return forwardMultiset().tailMultiset(toElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E fromElement,\n      BoundType fromBoundType,\n      @ParametricNullness E toElement,\n      BoundType toBoundType) {\n    return forwardMultiset()\n        .subMultiset(toElement, toBoundType, fromElement, fromBoundType)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E fromElement, BoundType boundType) {\n    return forwardMultiset().headMultiset(fromElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> delegate() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return forwardMultiset().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return forwardMultiset().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> entryIterator();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> entrySet() {\n    Set<Entry<E>> result = entrySet;\n    return (result == null) ? entrySet = createEntrySet() : result;\n  }\n\n  Set<Entry<E>> createEntrySet() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> multiset() {\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> iterator() {\n        return entryIterator();\n      }\n\n      @Override\n      public int size() {\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> iterator() {\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] toArray() {\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] toArray(T[] array) {\n    return standardToArray(array);\n  }\n\n  @Override\n  public String toString() {\n    return entrySet().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "919bfea262f892d6945882d520396db964e4f49f099be7942c02719550ecb45c", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 149, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__DescendingMultiset__ef40ca0f.java", "order": 9, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-9bf5ef40ca0f-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 430, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-311f1c2f7b79-I10", "source": "package com.google.common.collect; import com.google.common.annotations.GwtCompatible; import com.google.errorprone.annotations.concurrent.LazyInit; import com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator; import java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible abstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E> implements SortedMultiset<E> {\n  abstract SortedMultiset<E> forwardMultiset(); @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override public Comparator<? super E> comparator() { Comparator<? super E> result = comparator;\n    if (result == null) {\n      result = Ordering.from(forwardMultiset().comparator()).reverse();\n      comparator = result;\n    } return result;\n  } @LazyInit private transient @Nullable NavigableSet<E> elementSet; @Override public NavigableSet<E> elementSet() {\n    NavigableSet<E> result = elementSet; if (result == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this); }\n    return result;\n  }\n\n  @Override public @Nullable Entry<E> pollFirstEntry() { return forwardMultiset().pollLastEntry(); } @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    return forwardMultiset().pollFirstEntry(); } @Override public SortedMultiset<E> headMultiset(@ParametricNullness E toElement, BoundType boundType) { return forwardMultiset().tailMultiset(toElement, boundType).descendingMultiset();\n  } @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E fromElement,\n      BoundType fromBoundType,\n      @ParametricNullness E toElement,\n      BoundType toBoundType) {\n    return forwardMultiset() .subMultiset(toElement, toBoundType, fromElement, fromBoundType) .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E fromElement, BoundType boundType) { return forwardMultiset().headMultiset(fromElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> delegate() {\n    return forwardMultiset();\n  }\n\n  @Override public SortedMultiset<E> descendingMultiset() { return forwardMultiset();\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return forwardMultiset().lastEntry(); }\n\n  @Override public @Nullable Entry<E> lastEntry() { return forwardMultiset().firstEntry(); }\n\n  abstract Iterator<Entry<E>> entryIterator();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet; @Override\n  public Set<Entry<E>> entrySet() { Set<Entry<E>> result = entrySet; return (result == null) ? entrySet = createEntrySet() : result;\n  }\n\n  Set<Entry<E>> createEntrySet() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> multiset() { return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> iterator() {\n        return entryIterator(); }\n\n      @Override\n      public int size() {\n        return forwardMultiset().entrySet().size();\n      } }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> iterator() { return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] toArray() { return standardToArray();\n  }\n\n  @Override @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] toArray(T[] array) {\n    return standardToArray(array); }\n\n  @Override public String toString() { return entrySet().toString(); }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "a2877c374d6ccfa1d54d737777419da43170bd80a2ca44b55f505eddf4447a80", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "partially-compact-layout", "level": 10, "line_count": 94, "local_path": "layout/partially-compact-layout/I10__google-guava__DescendingMultiset__1c2f7b79.java", "order": 10, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 116, "line_break_groups_removed": 46, "line_breaks_removed": 53, "whitespace_characters_removed": 143}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-311f1c2f7b79-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 431, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-41232237b58c-I11", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> forwardMultiset();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> comparator() {\n    Comparator<? super E> result = comparator;\n    if (result == null) {\n      result = Ordering.from(forwardMultiset().comparator()).reverse();\n      comparator = result;\n    }\n    return result;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    NavigableSet<E> result = elementSet;\n    if (result == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    return forwardMultiset().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    return forwardMultiset().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E toElement, BoundType boundType) {\n    return forwardMultiset().tailMultiset(toElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E fromElement,\n      BoundType fromBoundType,\n      @ParametricNullness E toElement,\n      BoundType toBoundType) {\n    return forwardMultiset()\n        .subMultiset(toElement, toBoundType, fromElement, fromBoundType)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E fromElement, BoundType boundType) {\n    return forwardMultiset().headMultiset(fromElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> delegate() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return forwardMultiset().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return forwardMultiset().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> entryIterator();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> entrySet() {\n    Set<Entry<E>> result = entrySet;\n    return (result == null) ? entrySet = createEntrySet() : result;\n  }\n\n  Set<Entry<E>> createEntrySet() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> multiset() {\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> iterator() {\n        return entryIterator();\n      }\n\n      @Override\n      public int size() {\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> iterator() {\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] toArray() {\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] toArray(T[] array) {\n    return standardToArray(array);\n  }\n\n  @Override\n  public String toString() {\n    return entrySet().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 147, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__DescendingMultiset__2237b58c.java", "order": 11, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-41232237b58c-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 432, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e1d8159d48e6-I12", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> forwardMultiset();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> comparator() {\n    Comparator<? super E> result = comparator;\n    if (result == null) {\n      result = Ordering.from(forwardMultiset().comparator()).reverse();\n      comparator = result;\n    }\n    return result;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    NavigableSet<E> result = elementSet;\n    if (result == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    return forwardMultiset().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    return forwardMultiset().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E toElement, BoundType boundType) {\n    return forwardMultiset().tailMultiset(toElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E fromElement,\n      BoundType fromBoundType,\n      @ParametricNullness E toElement,\n      BoundType toBoundType) {\n    return forwardMultiset()\n        .subMultiset(toElement, toBoundType, fromElement, fromBoundType)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E fromElement, BoundType boundType) {\n    return forwardMultiset().headMultiset(fromElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> delegate() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return forwardMultiset().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return forwardMultiset().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> entryIterator();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> entrySet() {\n    Set<Entry<E>> result = entrySet;\n    return (result == null) ? entrySet = createEntrySet() : result;\n  }\n\n  Set<Entry<E>> createEntrySet() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> multiset() {\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> iterator() {\n        return entryIterator();\n      }\n\n      @Override\n      public int size() {\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> iterator() {\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] toArray() {\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] toArray(T[] array) {\n    return standardToArray(array);\n  }\n\n  @Override\n  public String toString() {\n    return entrySet().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 147, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__DescendingMultiset__159d48e6.java", "order": 12, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-e1d8159d48e6-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 433, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cc7d36810b51-I13", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport com.google.j2objc.annotations.WeakOuter;\nimport java.util.Comparator;\nimport java.util.Iterator;\nimport java.util.NavigableSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A skeleton implementation of a descending multiset. Only needs {@code forwardMultiset()} and\n * {@code entryIterator()}.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nabstract class DescendingMultiset<E extends @Nullable Object> extends ForwardingMultiset<E>\n    implements SortedMultiset<E> {\n  abstract SortedMultiset<E> forwardMultiset();\n\n  @LazyInit private transient @Nullable Comparator<? super E> comparator;\n\n  @Override\n  public Comparator<? super E> comparator() {\n    Comparator<? super E> result = comparator;\n    if (result == null) {\n      result = Ordering.from(forwardMultiset().comparator()).reverse();\n      comparator = result;\n    }\n    return result;\n  }\n\n  @LazyInit private transient @Nullable NavigableSet<E> elementSet;\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    NavigableSet<E> result = elementSet;\n    if (result == null) {\n      return elementSet = new SortedMultisets.NavigableElementSet<>(this);\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    return forwardMultiset().pollLastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    return forwardMultiset().pollFirstEntry();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E toElement, BoundType boundType) {\n    return forwardMultiset().tailMultiset(toElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E fromElement,\n      BoundType fromBoundType,\n      @ParametricNullness E toElement,\n      BoundType toBoundType) {\n    return forwardMultiset()\n        .subMultiset(toElement, toBoundType, fromElement, fromBoundType)\n        .descendingMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E fromElement, BoundType boundType) {\n    return forwardMultiset().headMultiset(fromElement, boundType).descendingMultiset();\n  }\n\n  @Override\n  protected Multiset<E> delegate() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    return forwardMultiset();\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return forwardMultiset().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return forwardMultiset().firstEntry();\n  }\n\n  abstract Iterator<Entry<E>> entryIterator();\n\n  @LazyInit private transient @Nullable Set<Entry<E>> entrySet;\n\n  @Override\n  public Set<Entry<E>> entrySet() {\n    Set<Entry<E>> result = entrySet;\n    return (result == null) ? entrySet = createEntrySet() : result;\n  }\n\n  Set<Entry<E>> createEntrySet() {\n    @WeakOuter\n    final class EntrySetImpl extends Multisets.EntrySet<E> {\n      @Override\n      Multiset<E> multiset() {\n        return DescendingMultiset.this;\n      }\n\n      @Override\n      public Iterator<Entry<E>> iterator() {\n        return entryIterator();\n      }\n\n      @Override\n      public int size() {\n        return forwardMultiset().entrySet().size();\n      }\n    }\n    return new EntrySetImpl();\n  }\n\n  @Override\n  public Iterator<E> iterator() {\n    return Multisets.iteratorImpl(this);\n  }\n\n  @Override\n  public @Nullable Object[] toArray() {\n    return standardToArray();\n  }\n\n  @Override\n  @SuppressWarnings(\"nullness\") // b/192354773 in our checker affects toArray declarations\n  public <T extends @Nullable Object> T[] toArray(T[] array) {\n    return standardToArray(array);\n  }\n\n  @Override\n  public String toString() {\n    return entrySet().toString();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__DescendingMultiset__391e9b0a.java", "base_sample_id": "source-3dcb756ab2e78cf3", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/DescendingMultiset.java", "interference": "lower-for-to-while", "level": 13, "line_count": 147, "local_path": "control-flow/lower-for-to-while/I13__google-guava__DescendingMultiset__36810b51.java", "order": 13, "original_content_sha256": "44c10a97ea188e5a8ad96bab5648a821e27918e22eeed26fd6314fa71e23bbcc", "parent_variant_id": "int-b2a9391e9b0a-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/DescendingMultiset.java#L28-L164", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "DescendingMultiset", "variant_id": "int-cc7d36810b51-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 434, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4745f5b50ff7-SRC", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> backingSet, ImmutableList<E> backingList) {\n    super(backingSet, backingList);\n  }\n\n  @Override\n  ImmutableSortedSet<E> delegateCollection() {\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegateCollection().comparator();\n  }\n\n  // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int indexOf(@Nullable Object target) {\n    int index = delegateCollection().indexOf(target);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n\n    // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    return (index >= 0 && get(index).equals(target)) ? index : -1;\n  }\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int lastIndexOf(@Nullable Object target) {\n    return indexOf(target);\n  }\n\n  @Override\n  public boolean contains(@Nullable Object target) {\n    // Necessary for ISS's with comparators inconsistent with equals.\n    return indexOf(target) >= 0;\n  }\n\n  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> subListUnchecked(int fromIndex, int toIndex) {\n    ImmutableList<E> parentSubList = super.subListUnchecked(fromIndex, toIndex);\n    return new RegularImmutableSortedSet<E>(parentSubList, comparator()).asList();\n  }\n\n  @Override\n  public Spliterator<E> spliterator() {\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        comparator());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object writeReplace() {\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": null, "level": 0, "line_count": 90, "local_path": "source-original/SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "order": 0, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-4745f5b50ff7-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 491, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c3afbf2fa470-I01", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> backingSet, ImmutableList<E> backingList) {\n    super(backingSet, backingList);\n  }\n\n  @Override\n  ImmutableSortedSet<E> delegateCollection() {\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegateCollection().comparator();\n  }\n\n   \n\n  @GwtIncompatible  \n   \n  @Override\n  public int indexOf(@Nullable Object target) {\n    int index = delegateCollection().indexOf(target);\n\n     \n     \n\n     \n     \n    return (index >= 0 && get(index).equals(target)) ? index : -1;\n  }\n\n  @GwtIncompatible  \n  @Override\n  public int lastIndexOf(@Nullable Object target) {\n    return indexOf(target);\n  }\n\n  @Override\n  public boolean contains(@Nullable Object target) {\n     \n    return indexOf(target) >= 0;\n  }\n\n  @GwtIncompatible  \n  \n\n\n\n\n  @Override\n  ImmutableList<E> subListUnchecked(int fromIndex, int toIndex) {\n    ImmutableList<E> parentSubList = super.subListUnchecked(fromIndex, toIndex);\n    return new RegularImmutableSortedSet<E>(parentSubList, comparator()).asList();\n  }\n\n  @Override\n  public Spliterator<E> spliterator() {\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        comparator());\n  }\n\n   \n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object writeReplace() {\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "f4164a3e9c1107e4be0092de2f717ab26a9ba3cba07cbf4f21526e23d1502d2e", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "remove-comments", "level": 1, "line_count": 90, "local_path": "comments/remove-comments/I01__google-guava__ImmutableSortedAsList__bf2fa470.java", "order": 1, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1022, "comments_removed": 13}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-c3afbf2fa470-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 492, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d36ef0439ddd-I02", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> backing, ImmutableList<E> backing2) {\n    super(backing, backing2);\n  }\n\n  @Override\n  ImmutableSortedSet<E> delegate() {\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> com() {\n    return delegate().comparator();\n  }\n\n  // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int index(@Nullable Object tar) {\n    int ind = delegate().indexOf(tar);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n\n    // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    return (ind >= 0 && get(ind).equals(tar)) ? ind : -1;\n  }\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int last(@Nullable Object tar2) {\n    return index(tar2);\n  }\n\n  @Override\n  public boolean con(@Nullable Object tar3) {\n    // Necessary for ISS's with comparators inconsistent with equals.\n    return index(tar3) >= 0;\n  }\n\n  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> sub(int from, int to) {\n    ImmutableList<E> parent = super.subListUnchecked(from, to);\n    return new RegularImmutableSortedSet<E>(parent, com()).asList();\n  }\n\n  @Override\n  public Spliterator<E> spl() {\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        com());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object write() {\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "bb5eb8676830a680a3df7e493b4eda0423f093d0952f0474d543cceaeaae342a", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "shorten-identifiers", "level": 2, "line_count": 90, "local_path": "identifiers/shorten-identifiers/I02__google-guava__ImmutableSortedAsList__f0439ddd.java", "order": 2, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 12, "identifiers_declared": 9, "local_name_collisions_avoided": 3, "method_calls_renamed": 6, "method_declarations_renamed": 8, "method_name_collisions_avoided": 0, "method_name_groups": 8}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-d36ef0439ddd-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 493, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f575efc57606-I03", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> sharedNode, ImmutableList<E> cachedBatch) {\n    super(sharedNode, cachedBatch);\n  }\n\n  @Override\n  ImmutableSortedSet<E> validateMessage() {\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> buildToken() {\n    return validateMessage().comparator();\n  }\n\n  // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int compare(@Nullable Object offset) {\n    int cache = validateMessage().indexOf(offset);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n\n    // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    return (cache >= 0 && get(cache).equals(offset)) ? cache : -1;\n  }\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int removeOrder(@Nullable Object config) {\n    return compare(config);\n  }\n\n  @Override\n  public boolean loadData(@Nullable Object result) {\n    // Necessary for ISS's with comparators inconsistent with equals.\n    return compare(result) >= 0;\n  }\n\n  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> validateSession(int nextOrder, int request) {\n    ImmutableList<E> currentWindow = super.subListUnchecked(nextOrder, request);\n    return new RegularImmutableSortedSet<E>(currentWindow, buildToken()).asList();\n  }\n\n  @Override\n  public Spliterator<E> saveRequest() {\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        buildToken());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object updateConfig() {\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "da1213904f54be39073d624fa5bcbb32ec3a19039f6c531e411fd2cfadd018f3", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "mislead-identifiers", "level": 3, "line_count": 90, "local_path": "identifiers/mislead-identifiers/I03__google-guava__ImmutableSortedAsList__efc57606.java", "order": 3, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 12, "identifiers_declared": 9, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 9, "local_random_pool_selections": 9, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 6, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 8, "method_exact_length_matches": 6, "method_name_groups": 8, "method_random_pool_selections": 8, "method_total_length_difference": 4}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-f575efc57606-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 494, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b0397dd55367-I04", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> a, ImmutableList<E> b) {\n    super(a, b);\n  }\n\n  @Override\n  ImmutableSortedSet<E> a() {\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> b() {\n    return a().comparator();\n  }\n\n  // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int c(@Nullable Object c) {\n    int d = a().indexOf(c);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n\n    // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    return (d >= 0 && get(d).equals(c)) ? d : -1;\n  }\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int d(@Nullable Object e) {\n    return c(e);\n  }\n\n  @Override\n  public boolean e(@Nullable Object f) {\n    // Necessary for ISS's with comparators inconsistent with equals.\n    return c(f) >= 0;\n  }\n\n  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> f(int g, int h) {\n    ImmutableList<E> i = super.subListUnchecked(g, h);\n    return new RegularImmutableSortedSet<E>(i, b()).asList();\n  }\n\n  @Override\n  public Spliterator<E> g() {\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        b());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object h() {\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "cd344f3237ddc96cdc7adae60152a6adef1a637e8b0399f7a3e1b5ec6a034a3b", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "garble-identifiers", "level": 4, "line_count": 90, "local_path": "identifiers/garble-identifiers/I04__google-guava__ImmutableSortedAsList__7dd55367.java", "order": 4, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 12, "identifiers_declared": 9, "local_name_collisions_avoided": 0, "method_calls_renamed": 6, "method_declarations_renamed": 8, "method_name_collisions_avoided": 0, "method_name_groups": 8}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-b0397dd55367-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 495, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-aaa71563922e-I05", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> backingSet, ImmutableList<E> backingList) {\n    super(backingSet, backingList);\n  }\n\n  @Override\n  ImmutableSortedSet<E> delegateCollection() {\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegateCollection().comparator();\n  }\n\n  // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int indexOf(@Nullable Object target) {\n    int index = delegateCollection().indexOf(target);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n\n    // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    return (index >= 0x0 && get(index).equals(target)) ? index : -0x1;\n  }\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int lastIndexOf(@Nullable Object target) {\n    return indexOf(target);\n  }\n\n  @Override\n  public boolean contains(@Nullable Object target) {\n    // Necessary for ISS's with comparators inconsistent with equals.\n    return indexOf(target) >= 0x0;\n  }\n\n  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> subListUnchecked(int fromIndex, int toIndex) {\n    ImmutableList<E> parentSubList = super.subListUnchecked(fromIndex, toIndex);\n    return new RegularImmutableSortedSet<E>(parentSubList, comparator()).asList();\n  }\n\n  @Override\n  public Spliterator<E> spliterator() {\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        comparator());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object writeReplace() {\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "c2e87b35c63cfdbdf7928d392abbaf3de757746fa448130971b92f0a267457c6", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "encode-integer-literals", "level": 5, "line_count": 90, "local_path": "expressions/encode-integer-literals/I05__google-guava__ImmutableSortedAsList__1563922e.java", "order": 5, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 3}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-aaa71563922e-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 496, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7359d3d2e14b-I06", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> backingSet, ImmutableList<E> backingList) {\n    super(backingSet, backingList);\n  }\n\n  @Override\n  ImmutableSortedSet<E> delegateCollection() {\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegateCollection().comparator();\n  }\n\n  // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int indexOf(@Nullable Object target) {\n    int index = delegateCollection().indexOf(target);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n\n    // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    return (index >= 0 && get(index).equals(target)) ? index : -1;\n  }\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int lastIndexOf(@Nullable Object target) {\n    return indexOf(target);\n  }\n\n  @Override\n  public boolean contains(@Nullable Object target) {\n    // Necessary for ISS's with comparators inconsistent with equals.\n    return indexOf(target) >= 0;\n  }\n\n  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> subListUnchecked(int fromIndex, int toIndex) {\n    ImmutableList<E> parentSubList = super.subListUnchecked(fromIndex, toIndex);\n    return new RegularImmutableSortedSet<E>(parentSubList, comparator()).asList();\n  }\n\n  @Override\n  public Spliterator<E> spliterator() {\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        comparator());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object writeReplace() {\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "invert-conditions", "level": 6, "line_count": 90, "local_path": "expressions/invert-conditions/I06__google-guava__ImmutableSortedAsList__d3d2e14b.java", "order": 6, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-7359d3d2e14b-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 497, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e14b56a09510-I07", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> backingSet, ImmutableList<E> backingList) {\n    super(backingSet, backingList);\nif (((0xE44B ^ 0xE44B) != 0)) { throw new AssertionError(); }\n\n  }\n\n  @Override\n  ImmutableSortedSet<E> delegateCollection() {\nif (((0x762A ^ 0x762A) != 0)) { throw new AssertionError(); }\n\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\nif (((0x72DC ^ 0x72DC) != 0)) { throw new AssertionError(); }\n\n    return delegateCollection().comparator();\n  }\n\n  // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int indexOf(@Nullable Object target) {\nif (((0x2079 ^ 0x2079) != 0)) { throw new AssertionError(); }\n\n    int index = delegateCollection().indexOf(target);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n\n    // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    return (index >= 0 && get(index).equals(target)) ? index : -1;\n  }\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int lastIndexOf(@Nullable Object target) {\nif (((0x3182 ^ 0x3182) != 0)) { throw new AssertionError(); }\n\n    return indexOf(target);\n  }\n\n  @Override\n  public boolean contains(@Nullable Object target) {\nif (((0xB0D2 ^ 0xB0D2) != 0)) { throw new AssertionError(); }\n\n    // Necessary for ISS's with comparators inconsistent with equals.\n    return indexOf(target) >= 0;\n  }\n\n  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> subListUnchecked(int fromIndex, int toIndex) {\nif (((0xEB02 ^ 0xEB02) != 0)) { throw new AssertionError(); }\n\n    ImmutableList<E> parentSubList = super.subListUnchecked(fromIndex, toIndex);\n    return new RegularImmutableSortedSet<E>(parentSubList, comparator()).asList();\n  }\n\n  @Override\n  public Spliterator<E> spliterator() {\nif (((0xB6C2 ^ 0xB6C2) != 0)) { throw new AssertionError(); }\n\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        comparator());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object writeReplace() {\nif (((0x4531 ^ 0x4531) != 0)) { throw new AssertionError(); }\n\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "56c29cdebbda49c3f119f7e9227586246bf4bc25358f0d533c98b3fc81f41b16", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "insert-dead-branches", "level": 7, "line_count": 108, "local_path": "code-injection/insert-dead-branches/I07__google-guava__ImmutableSortedAsList__56a09510.java", "order": 7, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 9}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-e14b56a09510-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 498, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-abaff656eb18-I08", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> backingSet, ImmutableList<E> backingList) {\n    super(backingSet, backingList);\n  }\n\n  @Override\n  ImmutableSortedSet<E> delegateCollection() {\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n{\n  int remainingSteps = 3;\n  while (remainingSteps > 0) {\n    remainingSteps--;\n  }\n}\n\n    return delegateCollection().comparator();\n  }\n\n  // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int indexOf(@Nullable Object target) {\n    int index = delegateCollection().indexOf(target);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n\n    // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    return (index >= 0 && get(index).equals(target)) ? index : -1;\n  }\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int lastIndexOf(@Nullable Object target) {\n    return indexOf(target);\n  }\n\n  @Override\n  public boolean contains(@Nullable Object target) {\n    // Necessary for ISS's with comparators inconsistent with equals.\n    return indexOf(target) >= 0;\n  }\n\n  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> subListUnchecked(int fromIndex, int toIndex) {\n    ImmutableList<E> parentSubList = super.subListUnchecked(fromIndex, toIndex);\n    return new RegularImmutableSortedSet<E>(parentSubList, comparator()).asList();\n  }\n\n  @Override\n  public Spliterator<E> spliterator() {\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        comparator());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object writeReplace() {\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "df929feb1c58abc14f149bf04fa2b57d21f5867acfd89338f019f7f4ebe517b2", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 97, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__ImmutableSortedAsList__f656eb18.java", "order": 8, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 1}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-abaff656eb18-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 499, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-013991951ac9-I09", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> backingSet, ImmutableList<E> backingList) {\n    super(backingSet, backingList);\n  }\n\n  @Override\n  ImmutableSortedSet<E> delegateCollection() {\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegateCollection().comparator();\n  }\n\n  // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int indexOf(@Nullable Object target) {\n    int index = delegateCollection().indexOf(target);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n\n    // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    return (index >= 0 && get(index).equals(target)) ? index : -1;\n  }\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int lastIndexOf(@Nullable Object target) {\n    return indexOf(target);\n  }\n\n  @Override\n  public boolean contains(@Nullable Object target) {\n    // Necessary for ISS's with comparators inconsistent with equals.\n    return indexOf(target) >= 0;\n  }\n\n  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> subListUnchecked(int fromIndex, int toIndex) {\n    ImmutableList<E> parentSubList = super.subListUnchecked(fromIndex, toIndex);\n    return new RegularImmutableSortedSet<E>(parentSubList, comparator()).asList();\n  }\n\n  @Override\n  public Spliterator<E> spliterator() {\n{int lI0O_d70a24ac=0x6349;lI0O_d70a24ac=((lI0O_d70a24ac^0x6349)|0)&-1;if(((lI0O_d70a24ac&1)==1)){lI0O_d70a24ac^=lI0O_d70a24ac;}}\n\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        comparator());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object writeReplace() {\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "7ab5930026c43f6a7003b5b77f84fa140054325cc557890b126969a50d66cbc3", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 92, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__ImmutableSortedAsList__91951ac9.java", "order": 9, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-013991951ac9-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 500, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-69c9f0d2ebc0-I10", "source": "package com.google.common.collect; import com.google.common.annotations.GwtCompatible; import com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> backingSet, ImmutableList<E> backingList) {\n    super(backingSet, backingList); } @Override ImmutableSortedSet<E> delegateCollection() { return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegateCollection().comparator();\n  } // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int indexOf(@Nullable Object target) { int index = delegateCollection().indexOf(target);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    return (index >= 0 && get(index).equals(target)) ? index : -1; } @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int lastIndexOf(@Nullable Object target) {\n    return indexOf(target); }\n\n  @Override\n  public boolean contains(@Nullable Object target) {\n    // Necessary for ISS's with comparators inconsistent with equals.\n    return indexOf(target) >= 0; } @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> subListUnchecked(int fromIndex, int toIndex) { ImmutableList<E> parentSubList = super.subListUnchecked(fromIndex, toIndex); return new RegularImmutableSortedSet<E>(parentSubList, comparator()).asList();\n  }\n\n  @Override\n  public Spliterator<E> spliterator() { return CollectSpliterators.indexed(\n        size(), ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get, comparator());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\") @Override\n  @J2ktIncompatible @GwtIncompatible Object writeReplace() {\n    return super.writeReplace(); }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "546579bce5edcc11c8568ad5ee0184e34b4c88c7675af02b52057768caf3ebd2", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "partially-compact-layout", "level": 10, "line_count": 63, "local_path": "layout/partially-compact-layout/I10__google-guava__ImmutableSortedAsList__f0d2ebc0.java", "order": 10, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 59, "line_break_groups_removed": 23, "line_breaks_removed": 27, "whitespace_characters_removed": 72}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-69c9f0d2ebc0-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 501, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b0cd08efef06-I11", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> backingSet, ImmutableList<E> backingList) {\n    super(backingSet, backingList);\n  }\n\n  @Override\n  ImmutableSortedSet<E> delegateCollection() {\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegateCollection().comparator();\n  }\n\n  // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int indexOf(@Nullable Object target) {\n    int index = delegateCollection().indexOf(target);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n\n    // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    final int a = 1;\n    final int b = -1;\n    final int c = 2;\n    final int d = -1;\n    return (index >= (a + b) && get(index).equals(target)) ? index : -(c + d);\n  }\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int lastIndexOf(@Nullable Object target) {\n    return indexOf(target);\n  }\n\n  @Override\n  public boolean contains(@Nullable Object target) {\n    // Necessary for ISS's with comparators inconsistent with equals.\n    final int e = 1;\n    final int f = -1;\n    return indexOf(target) >= (e + f);\n  }\n\n  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> subListUnchecked(int fromIndex, int toIndex) {\n    ImmutableList<E> parentSubList = super.subListUnchecked(fromIndex, toIndex);\n    return new RegularImmutableSortedSet<E>(parentSubList, comparator()).asList();\n  }\n\n  @Override\n  public Spliterator<E> spliterator() {\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        comparator());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object writeReplace() {\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "4aeab09da71103c7834ed6dd286fbaeaf260a95a1350c0fa53d05be7b71dfb66", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 96, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__ImmutableSortedAsList__08efef06.java", "order": 11, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 3, "intermediate_variables_introduced": 6, "statements_augmented": 2}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-b0cd08efef06-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 502, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ffd19f7c7f10-I12", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> backingSet, ImmutableList<E> backingList) {\n    super(backingSet, backingList);\n  }\n\n  @Override\n  ImmutableSortedSet<E> delegateCollection() {\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegateCollection().comparator();\n  }\n\n  // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int indexOf(@Nullable Object target) {\n    int index = delegateCollection().indexOf(target);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n\n    // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    return (index >= 0 && get(index).equals(target)) ? index : -1;\n  }\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int lastIndexOf(@Nullable Object target) {\n    return indexOf(target);\n  }\n\n  @Override\n  public boolean contains(@Nullable Object target) {\n    // Necessary for ISS's with comparators inconsistent with equals.\n    return indexOf(target) >= 0;\n  }\n\n  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> subListUnchecked(int fromIndex, int toIndex) {\n    \n    return new RegularImmutableSortedSet<E>((super.subListUnchecked(fromIndex, toIndex)), comparator()).asList();\n  }\n\n  @Override\n  public Spliterator<E> spliterator() {\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        comparator());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object writeReplace() {\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0900663792c9d804975e6370a0b6a38813c6f65b88f90d420537da3eb87a1942", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 90, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__ImmutableSortedAsList__9f7c7f10.java", "order": 12, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-ffd19f7c7f10-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 503, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7b3305511883-I13", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.util.Comparator;\nimport java.util.Spliterator;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * List returned by {@code ImmutableSortedSet.asList()} when the set isn't empty.\n *\n * @author Jared Levy\n * @author Louis Wasserman\n */\n@GwtCompatible\n@SuppressWarnings(\"serial\")\nfinal class ImmutableSortedAsList<E> extends RegularImmutableAsList<E>\n    implements SortedIterable<E> {\n  ImmutableSortedAsList(ImmutableSortedSet<E> backingSet, ImmutableList<E> backingList) {\n    super(backingSet, backingList);\n  }\n\n  @Override\n  ImmutableSortedSet<E> delegateCollection() {\n    return (ImmutableSortedSet<E>) super.delegateCollection();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegateCollection().comparator();\n  }\n\n  // Override indexOf() and lastIndexOf() to be O(log N) instead of O(N).\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  // TODO(cpovirk): consider manual binary search under GWT to preserve O(log N) lookup\n  @Override\n  public int indexOf(@Nullable Object target) {\n    int index = delegateCollection().indexOf(target);\n\n    // TODO(kevinb): reconsider if it's really worth making feeble attempts at\n    // sanity for inconsistent comparators.\n\n    // The equals() check is needed when the comparator isn't compatible with\n    // equals().\n    return (index >= 0 && get(index).equals(target)) ? index : -1;\n  }\n\n  @GwtIncompatible // ImmutableSortedSet.indexOf\n  @Override\n  public int lastIndexOf(@Nullable Object target) {\n    return indexOf(target);\n  }\n\n  @Override\n  public boolean contains(@Nullable Object target) {\n    // Necessary for ISS's with comparators inconsistent with equals.\n    return indexOf(target) >= 0;\n  }\n\n  @GwtIncompatible // super.subListUnchecked does not exist; inherited subList is valid if slow\n  /*\n   * TODO(cpovirk): if we start to override indexOf/lastIndexOf under GWT, we'll want some way to\n   * override subList to return an ImmutableSortedAsList for better performance. Right now, I'm not\n   * sure there's any performance hit from our failure to override subListUnchecked under GWT\n   */\n  @Override\n  ImmutableList<E> subListUnchecked(int fromIndex, int toIndex) {\n    ImmutableList<E> parentSubList = super.subListUnchecked(fromIndex, toIndex);\n    return new RegularImmutableSortedSet<E>(parentSubList, comparator()).asList();\n  }\n\n  @Override\n  public Spliterator<E> spliterator() {\n    return CollectSpliterators.indexed(\n        size(),\n        ImmutableList.SPLITERATOR_CHARACTERISTICS | Spliterator.SORTED | Spliterator.DISTINCT,\n        delegateList()::get,\n        comparator());\n  }\n\n  // redeclare to help optimizers with b/310253115\n  @SuppressWarnings(\"RedundantOverride\")\n  @Override\n  @J2ktIncompatible\n  @GwtIncompatible\n    Object writeReplace() {\n    return super.writeReplace();\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__ImmutableSortedAsList__f5b50ff7.java", "base_sample_id": "source-8436e74e9cec83db", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ImmutableSortedAsList.java", "interference": "lower-for-to-while", "level": 13, "line_count": 90, "local_path": "control-flow/lower-for-to-while/I13__google-guava__ImmutableSortedAsList__05511883.java", "order": 13, "original_content_sha256": "f4222d0027edec1ab6dec0f23f066fc7129a1d95961d739cb048073240bc85d5", "parent_variant_id": "int-4745f5b50ff7-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ImmutableSortedAsList.java#L24-L105", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ImmutableSortedAsList", "variant_id": "int-7b3305511883-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 504, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-79342aa99518-SRC", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() {\n    return new LinkedHashMultiset<>();\n  }\n\n  /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {\n    return new LinkedHashMultiset<>(distinctElements);\n  }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(\n      Iterable<? extends E> elements) {\n    LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));\n    Iterables.addAll(multiset, elements);\n    return multiset;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\n  }\n\n  private LinkedHashMultiset(int distinctElements) {\n    super(Maps.newLinkedHashMapWithExpectedSize(distinctElements));\n  }\n\n  /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void writeObject(ObjectOutputStream stream) throws IOException {\n    stream.defaultWriteObject();\n    Serialization.writeMultiset(this, stream);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {\n    stream.defaultReadObject();\n    int distinctElements = stream.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, stream, distinctElements);\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": null, "level": 0, "line_count": 88, "local_path": "source-original/SRC__google-guava__LinkedHashMultiset__2aa99518.java", "order": 0, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-79342aa99518-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 519, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-853cadb4376c-I01", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n   \n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() {\n    return new LinkedHashMultiset<>();\n  }\n\n  \n\n\n\n\n\n\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {\n    return new LinkedHashMultiset<>(distinctElements);\n  }\n\n  \n\n\n\n\n\n\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(\n      Iterable<? extends E> elements) {\n    LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));\n    Iterables.addAll(multiset, elements);\n    return multiset;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\n  }\n\n  private LinkedHashMultiset(int distinctElements) {\n    super(Maps.newLinkedHashMapWithExpectedSize(distinctElements));\n  }\n\n  \n\n\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void writeObject(ObjectOutputStream stream) throws IOException {\n    stream.defaultWriteObject();\n    Serialization.writeMultiset(this, stream);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {\n    stream.defaultReadObject();\n    int distinctElements = stream.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, stream, distinctElements);\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "7e509f5020d6ab7f670ecef09f1daabe7c1bc673dd5b9dbc33c36c25df5b9bf1", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "remove-comments", "level": 1, "line_count": 88, "local_path": "comments/remove-comments/I01__google-guava__LinkedHashMultiset__adb4376c.java", "order": 1, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1418, "comments_removed": 5}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-853cadb4376c-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 520, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ccb23cd4150b-I02", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> cre() {\n    return new LinkedHashMultiset<>();\n  }\n\n  /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> cre(int distinct) {\n    return new LinkedHashMultiset<>(distinct);\n  }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> cre(\n      Iterable<? extends E> ele) {\n    LinkedHashMultiset<E> mul = cre(Multisets.inferDistinctElements(ele));\n    Iterables.addAll(mul, ele);\n    return mul;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\n  }\n\n  private LinkedHashMultiset(int distinct2) {\n    super(Maps.newLinkedHashMapWithExpectedSize(distinct2));\n  }\n\n  /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void write(ObjectOutputStream str) throws IOException {\n    str.defaultWriteObject();\n    Serialization.writeMultiset(this, str);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void read(ObjectInputStream str2) throws IOException, ClassNotFoundException {\n    str2.defaultReadObject();\n    int distinct3 = str2.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, str2, distinct3);\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "bba62789222abeedfb8a18c8b94fc5a6df0e23b10b430651c926bdeec9336166", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "shorten-identifiers", "level": 2, "line_count": 88, "local_path": "identifiers/shorten-identifiers/I02__google-guava__LinkedHashMultiset__3cd4150b.java", "order": 2, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 12, "identifiers_declared": 7, "local_name_collisions_avoided": 3, "method_calls_renamed": 1, "method_declarations_renamed": 5, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-ccb23cd4150b-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 521, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-323f475ae974-I03", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> verify() {\n    return new LinkedHashMultiset<>();\n  }\n\n  /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> verify(int primaryBalance) {\n    return new LinkedHashMultiset<>(primaryBalance);\n  }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> verify(\n      Iterable<? extends E> response) {\n    LinkedHashMultiset<E> nextData = verify(Multisets.inferDistinctElements(response));\n    Iterables.addAll(nextData, response);\n    return nextData;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\n  }\n\n  private LinkedHashMultiset(int primarySession) {\n    super(Maps.newLinkedHashMapWithExpectedSize(primarySession));\n  }\n\n  /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void removeCount(ObjectOutputStream window) throws IOException {\n    window.defaultWriteObject();\n    Serialization.writeMultiset(this, window);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void updateMode(ObjectInputStream buffer) throws IOException, ClassNotFoundException {\n    buffer.defaultReadObject();\n    int defaultSession = buffer.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, buffer, defaultSession);\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "51f40d206bd941dd7a24cb70c19b5e50abb417bc9a4fa0ac1b183d5d623ea821", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "mislead-identifiers", "level": 3, "line_count": 88, "local_path": "identifiers/mislead-identifiers/I03__google-guava__LinkedHashMultiset__475ae974.java", "order": 3, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 12, "identifiers_declared": 7, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 1, "local_exact_length_matches": 4, "local_random_pool_selections": 7, "local_total_length_difference": 6, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 1, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 5, "method_exact_length_matches": 3, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-323f475ae974-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 522, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2d2fe5b70a2a-I04", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> a() {\n    return new LinkedHashMultiset<>();\n  }\n\n  /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> a(int a) {\n    return new LinkedHashMultiset<>(a);\n  }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> a(\n      Iterable<? extends E> b) {\n    LinkedHashMultiset<E> c = a(Multisets.inferDistinctElements(b));\n    Iterables.addAll(c, b);\n    return c;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\n  }\n\n  private LinkedHashMultiset(int d) {\n    super(Maps.newLinkedHashMapWithExpectedSize(d));\n  }\n\n  /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void b(ObjectOutputStream e) throws IOException {\n    e.defaultWriteObject();\n    Serialization.writeMultiset(this, e);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void c(ObjectInputStream f) throws IOException, ClassNotFoundException {\n    f.defaultReadObject();\n    int g = f.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, f, g);\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "d8a73e44bcb9bd2e98dd838f3e02c7af828e64cc884989352a1c44a42c9074e3", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "garble-identifiers", "level": 4, "line_count": 88, "local_path": "identifiers/garble-identifiers/I04__google-guava__LinkedHashMultiset__e5b70a2a.java", "order": 4, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 12, "identifiers_declared": 7, "local_name_collisions_avoided": 0, "method_calls_renamed": 1, "method_declarations_renamed": 5, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-2d2fe5b70a2a-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 523, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-963817f409de-I05", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() {\n    return new LinkedHashMultiset<>();\n  }\n\n  /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {\n    return new LinkedHashMultiset<>(distinctElements);\n  }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(\n      Iterable<? extends E> elements) {\n    LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));\n    Iterables.addAll(multiset, elements);\n    return multiset;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\n  }\n\n  private LinkedHashMultiset(int distinctElements) {\n    super(Maps.newLinkedHashMapWithExpectedSize(distinctElements));\n  }\n\n  /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void writeObject(ObjectOutputStream stream) throws IOException {\n    stream.defaultWriteObject();\n    Serialization.writeMultiset(this, stream);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {\n    stream.defaultReadObject();\n    int distinctElements = stream.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, stream, distinctElements);\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0x0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "4cf49e8ea00389ec89f7aca2feb81f47a2b4c913350caf33ab41b3d95582f732", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "encode-integer-literals", "level": 5, "line_count": 88, "local_path": "expressions/encode-integer-literals/I05__google-guava__LinkedHashMultiset__17f409de.java", "order": 5, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-963817f409de-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 524, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0026a4ff3a70-I06", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() {\n    return new LinkedHashMultiset<>();\n  }\n\n  /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {\n    return new LinkedHashMultiset<>(distinctElements);\n  }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(\n      Iterable<? extends E> elements) {\n    LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));\n    Iterables.addAll(multiset, elements);\n    return multiset;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\n  }\n\n  private LinkedHashMultiset(int distinctElements) {\n    super(Maps.newLinkedHashMapWithExpectedSize(distinctElements));\n  }\n\n  /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void writeObject(ObjectOutputStream stream) throws IOException {\n    stream.defaultWriteObject();\n    Serialization.writeMultiset(this, stream);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {\n    stream.defaultReadObject();\n    int distinctElements = stream.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, stream, distinctElements);\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "invert-conditions", "level": 6, "line_count": 88, "local_path": "expressions/invert-conditions/I06__google-guava__LinkedHashMultiset__a4ff3a70.java", "order": 6, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-0026a4ff3a70-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 525, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-99de1407414e-I07", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() {\nif (((0xED26 ^ 0xED26) != 0)) { throw new AssertionError(); }\n\n    return new LinkedHashMultiset<>();\n  }\n\n  /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {\nif (((0x60A ^ 0x60A) != 0)) { throw new AssertionError(); }\n\n    return new LinkedHashMultiset<>(distinctElements);\n  }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(\n      Iterable<? extends E> elements) {\nif (((0xA4CB ^ 0xA4CB) != 0)) { throw new AssertionError(); }\n\n    LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));\n    Iterables.addAll(multiset, elements);\n    return multiset;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\nif (((0xE7C5 ^ 0xE7C5) != 0)) { throw new AssertionError(); }\n\n  }\n\n  private LinkedHashMultiset(int distinctElements) {\n    super(Maps.newLinkedHashMapWithExpectedSize(distinctElements));\nif (((0xB7BE ^ 0xB7BE) != 0)) { throw new AssertionError(); }\n\n  }\n\n  /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void writeObject(ObjectOutputStream stream) throws IOException {\nif (((0xC3A1 ^ 0xC3A1) != 0)) { throw new AssertionError(); }\n\n    stream.defaultWriteObject();\n    Serialization.writeMultiset(this, stream);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {\nif (((0xBB38 ^ 0xBB38) != 0)) { throw new AssertionError(); }\n\n    stream.defaultReadObject();\n    int distinctElements = stream.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, stream, distinctElements);\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d03fdb5aa40892ef84552961a45a6fed914b2329260bfc821c627888ca3428b9", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "insert-dead-branches", "level": 7, "line_count": 102, "local_path": "code-injection/insert-dead-branches/I07__google-guava__LinkedHashMultiset__1407414e.java", "order": 7, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 7}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-99de1407414e-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 526, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6f44d58581f5-I08", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() {\n{\n  int remainingSteps = 3;\n  while (remainingSteps > 0) {\n    remainingSteps--;\n  }\n}\n\n    return new LinkedHashMultiset<>();\n  }\n\n  /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {\n    return new LinkedHashMultiset<>(distinctElements);\n  }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(\n      Iterable<? extends E> elements) {\n    LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));\n    Iterables.addAll(multiset, elements);\n    return multiset;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\n  }\n\n  private LinkedHashMultiset(int distinctElements) {\n    super(Maps.newLinkedHashMapWithExpectedSize(distinctElements));\n  }\n\n  /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void writeObject(ObjectOutputStream stream) throws IOException {\n    stream.defaultWriteObject();\n    Serialization.writeMultiset(this, stream);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {\n    stream.defaultReadObject();\n    int distinctElements = stream.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, stream, distinctElements);\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "71a01f84c2f142b132e509dc40693ee7f477802bdebfda0699531e4e5ea91043", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 95, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__LinkedHashMultiset__d58581f5.java", "order": 8, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 1}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-6f44d58581f5-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 527, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f00668154498-I09", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() {\n    return new LinkedHashMultiset<>();\n  }\n\n  /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {\n    return new LinkedHashMultiset<>(distinctElements);\n  }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(\n      Iterable<? extends E> elements) {\n    LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));\n    Iterables.addAll(multiset, elements);\n    return multiset;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\n  }\n\n  private LinkedHashMultiset(int distinctElements) {\n    super(Maps.newLinkedHashMapWithExpectedSize(distinctElements));\n  }\n\n  /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void writeObject(ObjectOutputStream stream) throws IOException {\n    stream.defaultWriteObject();\n    Serialization.writeMultiset(this, stream);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {\n{boolean lI0O_d93c6c14=((0x9607^0x9607)!=0);lI0O_d93c6c14=!(!lI0O_d93c6c14);}\n\n    stream.defaultReadObject();\n    int distinctElements = stream.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, stream, distinctElements);\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5d413efe4b160ca4a92e21e2532da43044507ca1d78e60bc8c0ee4c98302980b", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 90, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__LinkedHashMultiset__68154498.java", "order": 9, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-f00668154498-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 528, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ac21004b1f97-I10", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible; import com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream; import java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable; /**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */ @GwtCompatible public final class LinkedHashMultiset<E extends @Nullable Object> extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() { return new LinkedHashMultiset<>();\n  } /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */ public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {\n    return new LinkedHashMultiset<>(distinctElements); }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(\n      Iterable<? extends E> elements) {\n    LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));\n    Iterables.addAll(multiset, elements);\n    return multiset; }\n\n  private LinkedHashMultiset() { super(new LinkedHashMap<E, Count>());\n  } private LinkedHashMultiset(int distinctElements) {\n    super(Maps.newLinkedHashMapWithExpectedSize(distinctElements));\n  } /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */ @GwtIncompatible @J2ktIncompatible\n    private void writeObject(ObjectOutputStream stream) throws IOException {\n    stream.defaultWriteObject(); Serialization.writeMultiset(this, stream);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject();\n    int distinctElements = stream.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, stream, distinctElements); } @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "57835a48db068686d887816ea1e41424ecbc62332368192002836777afef802b", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "partially-compact-layout", "level": 10, "line_count": 63, "local_path": "layout/partially-compact-layout/I10__google-guava__LinkedHashMultiset__004b1f97.java", "order": 10, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 50, "line_break_groups_removed": 20, "line_breaks_removed": 25, "whitespace_characters_removed": 45}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-ac21004b1f97-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 529, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2d44b7052c74-I11", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() {\n    return new LinkedHashMultiset<>();\n  }\n\n  /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {\n    return new LinkedHashMultiset<>(distinctElements);\n  }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(\n      Iterable<? extends E> elements) {\n    LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));\n    Iterables.addAll(multiset, elements);\n    return multiset;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\n  }\n\n  private LinkedHashMultiset(int distinctElements) {\n    super(Maps.newLinkedHashMapWithExpectedSize(distinctElements));\n  }\n\n  /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void writeObject(ObjectOutputStream stream) throws IOException {\n    stream.defaultWriteObject();\n    Serialization.writeMultiset(this, stream);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {\n    stream.defaultReadObject();\n    int distinctElements = stream.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, stream, distinctElements);\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 88, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__LinkedHashMultiset__b7052c74.java", "order": 11, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-2d44b7052c74-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 530, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7753dd57426c-I12", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() {\n    return new LinkedHashMultiset<>();\n  }\n\n  /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {\n    return new LinkedHashMultiset<>(distinctElements);\n  }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(\n      Iterable<? extends E> elements) {\n    LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));\n    Iterables.addAll(multiset, elements);\n    return multiset;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\n  }\n\n  private LinkedHashMultiset(int distinctElements) {\n    super(Maps.newLinkedHashMapWithExpectedSize(distinctElements));\n  }\n\n  /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void writeObject(ObjectOutputStream stream) throws IOException {\n    stream.defaultWriteObject();\n    Serialization.writeMultiset(this, stream);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {\n    stream.defaultReadObject();\n    \n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, stream, (stream.readInt()));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "524e14da51ec7b6a09b0ce0cc8859318540506fa266f71b0ef4168c96b8a6e01", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 88, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__LinkedHashMultiset__dd57426c.java", "order": 12, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-7753dd57426c-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 531, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8b1dd118477a-I13", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport java.io.IOException;\nimport java.io.ObjectInputStream;\nimport java.io.ObjectOutputStream;\nimport java.util.LinkedHashMap;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multiset} implementation with predictable iteration order. Its iterator orders elements\n * according to when the first occurrence of the element was added. When the multiset contains\n * multiple instances of an element, those instances are consecutive in the iteration order. If all\n * occurrences of an element are removed, after which that element is added to the multiset, the\n * element will appear at the end of the iteration.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multiset\">{@code Multiset}</a>.\n *\n * @author Kevin Bourrillion\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic final class LinkedHashMultiset<E extends @Nullable Object>\n    extends AbstractMapBasedMultiset<E> {\n\n  /** Creates a new, empty {@code LinkedHashMultiset} using the default initial capacity. */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create() {\n    return new LinkedHashMultiset<>();\n  }\n\n  /**\n   * Creates a new, empty {@code LinkedHashMultiset} with the specified expected number of distinct\n   * elements.\n   *\n   * @param distinctElements the expected number of distinct elements\n   * @throws IllegalArgumentException if {@code distinctElements} is negative\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(int distinctElements) {\n    return new LinkedHashMultiset<>(distinctElements);\n  }\n\n  /**\n   * Creates a new {@code LinkedHashMultiset} containing the specified elements.\n   *\n   * <p>This implementation is highly efficient when {@code elements} is itself a {@link Multiset}.\n   *\n   * @param elements the elements that the multiset should contain\n   */\n  public static <E extends @Nullable Object> LinkedHashMultiset<E> create(\n      Iterable<? extends E> elements) {\n    LinkedHashMultiset<E> multiset = create(Multisets.inferDistinctElements(elements));\n    Iterables.addAll(multiset, elements);\n    return multiset;\n  }\n\n  private LinkedHashMultiset() {\n    super(new LinkedHashMap<E, Count>());\n  }\n\n  private LinkedHashMultiset(int distinctElements) {\n    super(Maps.newLinkedHashMapWithExpectedSize(distinctElements));\n  }\n\n  /**\n   * @serialData the number of distinct elements, the first element, its count, the second element,\n   *     its count, and so on\n   */\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void writeObject(ObjectOutputStream stream) throws IOException {\n    stream.defaultWriteObject();\n    Serialization.writeMultiset(this, stream);\n  }\n\n  @GwtIncompatible\n  @J2ktIncompatible\n    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {\n    stream.defaultReadObject();\n    int distinctElements = stream.readInt();\n    setBackingMap(new LinkedHashMap<E, Count>());\n    Serialization.populateMultiset(this, stream, distinctElements);\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__LinkedHashMultiset__2aa99518.java", "base_sample_id": "source-33effe4a5a04b8b0", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/LinkedHashMultiset.java", "interference": "lower-for-to-while", "level": 13, "line_count": 88, "local_path": "control-flow/lower-for-to-while/I13__google-guava__LinkedHashMultiset__d118477a.java", "order": 13, "original_content_sha256": "780800564f931ce1480c5e70fe1377e55a97ef69b228a74f9bee41c0f712387f", "parent_variant_id": "int-79342aa99518-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/LinkedHashMultiset.java#L28-L105", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "LinkedHashMultiset", "variant_id": "int-8b1dd118477a-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 532, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-91d8fb1ce59b-SRC", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @Override\n  List<V> get(@ParametricNullness K key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> removeAll(@Nullable Object key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */\n  @Override\n  Map<K, Collection<V>> asMap();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean equals(@Nullable Object obj);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": null, "level": 0, "line_count": 80, "local_path": "source-original/SRC__google-guava__ListMultimap__fb1ce59b.java", "order": 0, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-91d8fb1ce59b-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 533, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b5763ff19185-I01", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  \n\n\n\n\n\n\n  @Override\n  List<V> get(@ParametricNullness K key);\n\n  \n\n\n\n\n\n\n  @CanIgnoreReturnValue\n  @Override\n  List<V> removeAll(@Nullable Object key);\n\n  \n\n\n\n\n\n\n  @CanIgnoreReturnValue\n  @Override\n  List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);\n\n  \n\n\n\n\n\n\n  @Override\n  Map<K, Collection<V>> asMap();\n\n  \n\n\n\n\n\n\n\n\n  @Override\n  boolean equals(@Nullable Object obj);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "b34a5cc9c07c9a22ae05e3e680d27234ce0d83f8d5f77b8a0df84a39c3f0fc59", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "remove-comments", "level": 1, "line_count": 80, "local_path": "comments/remove-comments/I01__google-guava__ListMultimap__3ff19185.java", "order": 1, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 2091, "comments_removed": 6}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-b5763ff19185-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 534, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bab354f321ed-I02", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @Override\n  List<V> get(@ParametricNullness K key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> remove(@Nullable Object key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> replace(@ParametricNullness K key, Iterable<? extends V> val);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */\n  @Override\n  Map<K, Collection<V>> as();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean equ(@Nullable Object obj);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "5c57907031cadb511eb04c5efd2c016cb9542a64c3e5ba16cd4f54ee66267db7", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "shorten-identifiers", "level": 2, "line_count": 80, "local_path": "identifiers/shorten-identifiers/I02__google-guava__ListMultimap__54f321ed.java", "order": 2, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 5}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-bab354f321ed-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 535, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-043778b749aa-I03", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @Override\n  List<V> add(@ParametricNullness K map);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> findCache(@Nullable Object age);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> validateScore(@ParametricNullness K step, Iterable<? extends V> option);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */\n  @Override\n  Map<K, Collection<V>> store();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean select(@Nullable Object key);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "919b10afedc765c55d42d559f3c1b4c435f78528b2077c08a0ee7b10b52cb521", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "mislead-identifiers", "level": 3, "line_count": 80, "local_path": "identifiers/mislead-identifiers/I03__google-guava__ListMultimap__78b749aa.java", "order": 3, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 3, "local_exact_length_matches": 4, "local_random_pool_selections": 5, "local_total_length_difference": 1, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 5, "method_exact_length_matches": 5, "method_name_groups": 5, "method_random_pool_selections": 5, "method_total_length_difference": 0}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-043778b749aa-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 536, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-898fad24dd95-I04", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @Override\n  List<V> a(@ParametricNullness K a);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> b(@Nullable Object b);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> c(@ParametricNullness K c, Iterable<? extends V> d);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */\n  @Override\n  Map<K, Collection<V>> d();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean e(@Nullable Object e);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "d788535950ed1da2cc03e9f836faf1c7b936044f62b4e7b8f6f0b275ec4e094a", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "garble-identifiers", "level": 4, "line_count": 80, "local_path": "identifiers/garble-identifiers/I04__google-guava__ListMultimap__ad24dd95.java", "order": 4, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 5, "method_name_collisions_avoided": 0, "method_name_groups": 5}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-898fad24dd95-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 537, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4cf05b305c61-I05", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @Override\n  List<V> get(@ParametricNullness K key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> removeAll(@Nullable Object key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */\n  @Override\n  Map<K, Collection<V>> asMap();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean equals(@Nullable Object obj);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "encode-integer-literals", "level": 5, "line_count": 80, "local_path": "expressions/encode-integer-literals/I05__google-guava__ListMultimap__5b305c61.java", "order": 5, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-4cf05b305c61-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 538, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-475b91397d72-I06", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @Override\n  List<V> get(@ParametricNullness K key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> removeAll(@Nullable Object key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */\n  @Override\n  Map<K, Collection<V>> asMap();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean equals(@Nullable Object obj);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "invert-conditions", "level": 6, "line_count": 80, "local_path": "expressions/invert-conditions/I06__google-guava__ListMultimap__91397d72.java", "order": 6, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-475b91397d72-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 539, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-958fa2906a2e-I07", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @Override\n  List<V> get(@ParametricNullness K key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> removeAll(@Nullable Object key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */\n  @Override\n  Map<K, Collection<V>> asMap();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean equals(@Nullable Object obj);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "insert-dead-branches", "level": 7, "line_count": 80, "local_path": "code-injection/insert-dead-branches/I07__google-guava__ListMultimap__a2906a2e.java", "order": 7, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-958fa2906a2e-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 540, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-13c1da3ac4c7-I08", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @Override\n  List<V> get(@ParametricNullness K key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> removeAll(@Nullable Object key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */\n  @Override\n  Map<K, Collection<V>> asMap();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean equals(@Nullable Object obj);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 80, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__ListMultimap__da3ac4c7.java", "order": 8, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-13c1da3ac4c7-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 541, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bd4e9d9cf75e-I09", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @Override\n  List<V> get(@ParametricNullness K key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> removeAll(@Nullable Object key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */\n  @Override\n  Map<K, Collection<V>> asMap();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean equals(@Nullable Object obj);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 80, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__ListMultimap__9d9cf75e.java", "order": 9, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-bd4e9d9cf75e-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 542, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-30bba825d566-I10", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue; import java.util.Collection;\nimport java.util.List;\nimport java.util.Map; import org.jspecify.annotations.Nullable; /**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */ @GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object> extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */ @Override\n  List<V> get(@ParametricNullness K key); /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue @Override\n  List<V> removeAll(@Nullable Object key); /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */ @Override\n  Map<K, Collection<V>> asMap();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean equals(@Nullable Object obj); }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "8d7f6c3bead86835781ddd11266e43ea6d85dd19b86f7f189482c1ac864c5477", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "partially-compact-layout", "level": 10, "line_count": 66, "local_path": "layout/partially-compact-layout/I10__google-guava__ListMultimap__a825d566.java", "order": 10, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 28, "line_break_groups_removed": 11, "line_breaks_removed": 14, "whitespace_characters_removed": 17}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-30bba825d566-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 543, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6824ad7c2d47-I11", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @Override\n  List<V> get(@ParametricNullness K key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> removeAll(@Nullable Object key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */\n  @Override\n  Map<K, Collection<V>> asMap();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean equals(@Nullable Object obj);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 80, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__ListMultimap__ad7c2d47.java", "order": 11, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-6824ad7c2d47-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 544, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ca92bfac771a-I12", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @Override\n  List<V> get(@ParametricNullness K key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> removeAll(@Nullable Object key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */\n  @Override\n  Map<K, Collection<V>> asMap();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean equals(@Nullable Object obj);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 80, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__ListMultimap__bfac771a.java", "order": 12, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-ca92bfac771a-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 545, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-207a8afafdb7-I13", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@code Multimap} that can hold duplicate key-value pairs and that maintains the insertion\n * ordering of values for a given key. See the {@link Multimap} documentation for information common\n * to all multimaps.\n *\n * <p>The {@link #get}, {@link #removeAll}, and {@link #replaceValues} methods each return a {@link\n * List} of values. Though the method signature doesn't say so explicitly, the map returned by\n * {@link #asMap} has {@code List} values.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/NewCollectionTypesExplained#multimap\">{@code Multimap}</a>.\n *\n * @author Jared Levy\n * @since 2.0\n */\n@GwtCompatible\npublic interface ListMultimap<K extends @Nullable Object, V extends @Nullable Object>\n    extends Multimap<K, V> {\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @Override\n  List<V> get(@ParametricNullness K key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> removeAll(@Nullable Object key);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Because the values for a given key may have duplicates and follow the insertion ordering,\n   * this method returns a {@link List}, instead of the {@link java.util.Collection} specified in\n   * the {@link Multimap} interface.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  List<V> replaceValues(@ParametricNullness K key, Iterable<? extends V> values);\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p><b>Note:</b> The returned map's values are guaranteed to be of type {@link List}. To obtain\n   * this map with the more specific generic type {@code Map<K, List<V>>}, call {@link\n   * Multimaps#asMap(ListMultimap)} instead.\n   */\n  @Override\n  Map<K, Collection<V>> asMap();\n\n  /**\n   * Compares the specified object to this multimap for equality.\n   *\n   * <p>Two {@code ListMultimap} instances are equal if, for each key, they contain the same values\n   * in the same order. If the value orderings disagree, the multimaps will not be considered equal.\n   *\n   * <p>An empty {@code ListMultimap} is equal to any other empty {@code Multimap}, including an\n   * empty {@code SetMultimap}.\n   */\n  @Override\n  boolean equals(@Nullable Object obj);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__ListMultimap__fb1ce59b.java", "base_sample_id": "source-daca4388a6e14e97", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/ListMultimap.java", "interference": "lower-for-to-while", "level": 13, "line_count": 80, "local_path": "control-flow/lower-for-to-while/I13__google-guava__ListMultimap__8afafdb7.java", "order": 13, "original_content_sha256": "96795e44a9058cd3b4ac525ab335cf6a7615727ca860a720b3bb40e4c015d03b", "parent_variant_id": "int-91d8fb1ce59b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/ListMultimap.java#L26-L97", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "ListMultimap", "variant_id": "int-207a8afafdb7-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 546, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8242fdd8ec19-SRC", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n/** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int compare(Comparable<?> left, Comparable<?> right) {\n    checkNotNull(left); // for GWT\n    checkNotNull(right);\n    return ((Comparable<Object>) left).compareTo(right);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() {\n    Ordering<@Nullable Comparable<?>> result = nullsFirst;\n    if (result == null) {\n      result = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() {\n    Ordering<@Nullable Comparable<?>> result = nullsLast;\n    if (result == null) {\n      result = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> reverse() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object readResolve() {\n    return INSTANCE;\n  }\n\n  @Override\n  public String toString() {\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": null, "level": 0, "line_count": 69, "local_path": "source-original/SRC__google-guava__NaturalOrdering__fdd8ec19.java", "order": 0, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-8242fdd8ec19-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 575, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5733caf0c23e-I01", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n \n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  \n\n\n\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\")  \n  public int compare(Comparable<?> left, Comparable<?> right) {\n    checkNotNull(left);  \n    checkNotNull(right);\n    return ((Comparable<Object>) left).compareTo(right);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\")  \n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() {\n    Ordering<@Nullable Comparable<?>> result = nullsFirst;\n    if (result == null) {\n      result = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\")  \n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() {\n    Ordering<@Nullable Comparable<?>> result = nullsLast;\n    if (result == null) {\n      result = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\")  \n  public <S extends Comparable<?>> Ordering<S> reverse() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n   \n  private Object readResolve() {\n    return INSTANCE;\n  }\n\n  @Override\n  public String toString() {\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "57bcf5861fe81e53298e161db3bf47f6d70e1a315d3dabd1d3ddbd4df399f4d8", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "remove-comments", "level": 1, "line_count": 69, "local_path": "comments/remove-comments/I01__google-guava__NaturalOrdering__caf0c23e.java", "order": 1, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 484, "comments_removed": 8}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-5733caf0c23e-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 576, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-be0d63c02eea-I02", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n/** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int com(Comparable<?> lef, Comparable<?> rig) {\n    checkNotNull(lef); // for GWT\n    checkNotNull(rig);\n    return ((Comparable<Object>) lef).compareTo(rig);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nulls() {\n    Ordering<@Nullable Comparable<?>> res = nullsFirst;\n    if (res == null) {\n      res = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) res;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nulls2() {\n    Ordering<@Nullable Comparable<?>> res2 = nullsLast;\n    if (res2 == null) {\n      res2 = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) res2;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> rev() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object read() {\n    return INSTANCE;\n  }\n\n  @Override\n  public String to() {\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "9567b1e9fe9a98498fef6d79b82e2af175be56d11b4b87ed15a2dd048b54e86f", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "shorten-identifiers", "level": 2, "line_count": 69, "local_path": "identifiers/shorten-identifiers/I02__google-guava__NaturalOrdering__63c02eea.java", "order": 2, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 10, "identifiers_declared": 4, "local_name_collisions_avoided": 1, "method_calls_renamed": 0, "method_declarations_renamed": 6, "method_name_collisions_avoided": 1, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-be0d63c02eea-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 577, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9abdc2153adc-I03", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n/** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int publish(Comparable<?> path, Comparable<?> limit) {\n    checkNotNull(path); // for GWT\n    checkNotNull(limit);\n    return ((Comparable<Object>) path).compareTo(limit);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> removeUser() {\n    Ordering<@Nullable Comparable<?>> target = nullsFirst;\n    if (target == null) {\n      target = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) target;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> buildNode() {\n    Ordering<@Nullable Comparable<?>> option = nullsLast;\n    if (option == null) {\n      option = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) option;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> analyze() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object removeCount() {\n    return INSTANCE;\n  }\n\n  @Override\n  public String dispatch() {\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "865974c4b18b707f9b8e2ca45e44051789041ccf4b80f404d1d8bf3c52a841f9", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "mislead-identifiers", "level": 3, "line_count": 69, "local_path": "identifiers/mislead-identifiers/I03__google-guava__NaturalOrdering__c2153adc.java", "order": 3, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 10, "identifiers_declared": 4, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 4, "local_random_pool_selections": 4, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 6, "method_exact_length_matches": 6, "method_name_groups": 6, "method_random_pool_selections": 6, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-9abdc2153adc-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 578, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-845b11665572-I04", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n/** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int a(Comparable<?> a, Comparable<?> b) {\n    checkNotNull(a); // for GWT\n    checkNotNull(b);\n    return ((Comparable<Object>) a).compareTo(b);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> b() {\n    Ordering<@Nullable Comparable<?>> c = nullsFirst;\n    if (c == null) {\n      c = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) c;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> c() {\n    Ordering<@Nullable Comparable<?>> d = nullsLast;\n    if (d == null) {\n      d = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) d;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> d() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object e() {\n    return INSTANCE;\n  }\n\n  @Override\n  public String f() {\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "d00334c606e32c39548ed41f6d2fbce28a8e96c7f19770a7d7c1a22c5a196d1a", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "garble-identifiers", "level": 4, "line_count": 69, "local_path": "identifiers/garble-identifiers/I04__google-guava__NaturalOrdering__11665572.java", "order": 4, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 10, "identifiers_declared": 4, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 6, "method_name_collisions_avoided": 0, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-845b11665572-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 579, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-710ae28cb363-I05", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n/** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int compare(Comparable<?> left, Comparable<?> right) {\n    checkNotNull(left); // for GWT\n    checkNotNull(right);\n    return ((Comparable<Object>) left).compareTo(right);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() {\n    Ordering<@Nullable Comparable<?>> result = nullsFirst;\n    if (result == null) {\n      result = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() {\n    Ordering<@Nullable Comparable<?>> result = nullsLast;\n    if (result == null) {\n      result = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> reverse() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object readResolve() {\n    return INSTANCE;\n  }\n\n  @Override\n  public String toString() {\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0x0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "3fed114389379ca9b4f33292ee437d0e898ca3dca1686df1d299d357af2bb2b1", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "encode-integer-literals", "level": 5, "line_count": 69, "local_path": "expressions/encode-integer-literals/I05__google-guava__NaturalOrdering__e28cb363.java", "order": 5, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-710ae28cb363-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 580, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1367fc616077-I06", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n/** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int compare(Comparable<?> left, Comparable<?> right) {\n    checkNotNull(left); // for GWT\n    checkNotNull(right);\n    return ((Comparable<Object>) left).compareTo(right);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() {\n    Ordering<@Nullable Comparable<?>> result = nullsFirst;\n    if (!((result == null))) {} else {\n      result = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() {\n    Ordering<@Nullable Comparable<?>> result = nullsLast;\n    if (!((result == null))) {} else {\n      result = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> reverse() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object readResolve() {\n    return INSTANCE;\n  }\n\n  @Override\n  public String toString() {\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "4239071051b183fe30b9bf8a97f732e36a524c92b5a3ec61781622184eb01a44", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "invert-conditions", "level": 6, "line_count": 69, "local_path": "expressions/invert-conditions/I06__google-guava__NaturalOrdering__fc616077.java", "order": 6, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-1367fc616077-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 581, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c7207d315cd1-I07", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n/** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int compare(Comparable<?> left, Comparable<?> right) {\nif (((0xDC23 ^ 0xDC23) != 0)) { throw new AssertionError(); }\n\n    checkNotNull(left); // for GWT\n    checkNotNull(right);\n    return ((Comparable<Object>) left).compareTo(right);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() {\nif (((0x5207 ^ 0x5207) != 0)) { throw new AssertionError(); }\n\n    Ordering<@Nullable Comparable<?>> result = nullsFirst;\n    if (result == null) {\n      result = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() {\nif (((0x8C90 ^ 0x8C90) != 0)) { throw new AssertionError(); }\n\n    Ordering<@Nullable Comparable<?>> result = nullsLast;\n    if (result == null) {\n      result = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> reverse() {\nif (((0xBA84 ^ 0xBA84) != 0)) { throw new AssertionError(); }\n\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object readResolve() {\nif (((0x7856 ^ 0x7856) != 0)) { throw new AssertionError(); }\n\n    return INSTANCE;\n  }\n\n  @Override\n  public String toString() {\nif (((0xA365 ^ 0xA365) != 0)) { throw new AssertionError(); }\n\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {\nif (((0xBF7F ^ 0xBF7F) != 0)) { throw new AssertionError(); }\n}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "770085d0cd2bf262823d23cce88c1c5381e861b146d47b6b85e88bebc9da6067", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "insert-dead-branches", "level": 7, "line_count": 83, "local_path": "code-injection/insert-dead-branches/I07__google-guava__NaturalOrdering__7d315cd1.java", "order": 7, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 7}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-c7207d315cd1-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 582, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-edb453be61c5-I08", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n/** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int compare(Comparable<?> left, Comparable<?> right) {\n    checkNotNull(left); // for GWT\n    checkNotNull(right);\n    return ((Comparable<Object>) left).compareTo(right);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() {\n    Ordering<@Nullable Comparable<?>> result = nullsFirst;\n    if (result == null) {\n      result = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() {\n    Ordering<@Nullable Comparable<?>> result = nullsLast;\n    if (result == null) {\n      result = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> reverse() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object readResolve() {\n    return INSTANCE;\n  }\n\n  @Override\n  public String toString() {\n{\n  int morningTemperature = 18;\n  int eveningTemperature = 14;\n  int lowerTemperature = morningTemperature;\n  if (eveningTemperature < lowerTemperature) {\n    lowerTemperature = eveningTemperature;\n  }\n}\n\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "373d72c869dc6a041a430b95deb3d5e0424747fa87b04518c2f8c8fe025e5cac", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 78, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__NaturalOrdering__53be61c5.java", "order": 8, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 4}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-edb453be61c5-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 583, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-577c34b5cce8-I09", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n/** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int compare(Comparable<?> left, Comparable<?> right) {\n{int lI0O_a24bca84=(0x3169^0x3169);switch(lI0O_a24bca84){case 0:lI0O_a24bca84|=0;break;default:lI0O_a24bca84&=0;}}\n\n    checkNotNull(left); // for GWT\n    checkNotNull(right);\n    return ((Comparable<Object>) left).compareTo(right);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() {\n    Ordering<@Nullable Comparable<?>> result = nullsFirst;\n    if (result == null) {\n      result = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() {\n    Ordering<@Nullable Comparable<?>> result = nullsLast;\n    if (result == null) {\n      result = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> reverse() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object readResolve() {\n    return INSTANCE;\n  }\n\n  @Override\n  public String toString() {\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "3088e8ed6b738d8139d4a79d6e337f7f43f51e549a1a1786983344dc1f652498", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 71, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__NaturalOrdering__34b5cce8.java", "order": 9, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 6}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-577c34b5cce8-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 584, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a3987ed072c5-I10", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible; import com.google.common.annotations.J2ktIncompatible; import com.google.errorprone.annotations.concurrent.LazyInit; import java.io.Serializable;\nimport org.jspecify.annotations.Nullable; /** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst; @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int compare(Comparable<?> left, Comparable<?> right) {\n    checkNotNull(left); // for GWT\n    checkNotNull(right); return ((Comparable<Object>) left).compareTo(right); } @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() { Ordering<@Nullable Comparable<?>> result = nullsFirst;\n    if (result == null) { result = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() { Ordering<@Nullable Comparable<?>> result = nullsLast;\n    if (result == null) { result = nullsLast = super.<Comparable<?>>nullsLast(); } return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> reverse() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE; }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object readResolve() {\n    return INSTANCE; } @Override public String toString() {\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0; }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "6c208afc690eff56ce1782e69d5c6c81a99d0553dce38999c4346fd002922d00", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "partially-compact-layout", "level": 10, "line_count": 47, "local_path": "layout/partially-compact-layout/I10__google-guava__NaturalOrdering__7ed072c5.java", "order": 10, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 49, "line_break_groups_removed": 19, "line_breaks_removed": 22, "whitespace_characters_removed": 49}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-a3987ed072c5-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 585, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-439d17690d60-I11", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n/** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int compare(Comparable<?> left, Comparable<?> right) {\n    checkNotNull(left); // for GWT\n    checkNotNull(right);\n    return ((Comparable<Object>) left).compareTo(right);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() {\n    Ordering<@Nullable Comparable<?>> result = nullsFirst;\n    if (result == null) {\n      result = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() {\n    Ordering<@Nullable Comparable<?>> result = nullsLast;\n    if (result == null) {\n      result = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> reverse() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object readResolve() {\n    return INSTANCE;\n  }\n\n  @Override\n  public String toString() {\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 69, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__NaturalOrdering__17690d60.java", "order": 11, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-439d17690d60-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 586, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c3917e04528b-I12", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n/** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int compare(Comparable<?> left, Comparable<?> right) {\n    checkNotNull(left); // for GWT\n    checkNotNull(right);\n    return ((Comparable<Object>) left).compareTo(right);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() {\n    Ordering<@Nullable Comparable<?>> result = nullsFirst;\n    if (result == null) {\n      result = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() {\n    Ordering<@Nullable Comparable<?>> result = nullsLast;\n    if (result == null) {\n      result = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> reverse() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object readResolve() {\n    return INSTANCE;\n  }\n\n  @Override\n  public String toString() {\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 69, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__NaturalOrdering__7e04528b.java", "order": 12, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-c3917e04528b-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 587, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f261a94bb698-I13", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.io.Serializable;\nimport org.jspecify.annotations.Nullable;\n\n/** An ordering that uses the natural order of the values. */\n@GwtCompatible\nfinal class NaturalOrdering extends Ordering<Comparable<?>> implements Serializable {\n  static final NaturalOrdering INSTANCE = new NaturalOrdering();\n\n  /*\n   * TODO: b/287198172 - Consider eagerly initializing these, maybe making them static. But that\n   * would lead to at least slighly more work at startup time.\n   */\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsFirst;\n  @LazyInit private transient @Nullable Ordering<@Nullable Comparable<?>> nullsLast;\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public int compare(Comparable<?> left, Comparable<?> right) {\n    checkNotNull(left); // for GWT\n    checkNotNull(right);\n    return ((Comparable<Object>) left).compareTo(right);\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsFirst() {\n    Ordering<@Nullable Comparable<?>> result = nullsFirst;\n    if (result == null) {\n      result = nullsFirst = super.<Comparable<?>>nullsFirst();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<@Nullable S> nullsLast() {\n    Ordering<@Nullable Comparable<?>> result = nullsLast;\n    if (result == null) {\n      result = nullsLast = super.<Comparable<?>>nullsLast();\n    }\n    return (Ordering<@Nullable S>) result;\n  }\n\n  @Override\n  @SuppressWarnings(\"unchecked\") // TODO(kevinb): the right way to explain this??\n  public <S extends Comparable<?>> Ordering<S> reverse() {\n    return (Ordering<S>) ReverseNaturalOrdering.INSTANCE;\n  }\n\n  // preserving singleton-ness gives equals()/hashCode() for free\n  private Object readResolve() {\n    return INSTANCE;\n  }\n\n  @Override\n  public String toString() {\n    return \"Ordering.natural()\";\n  }\n\n  private NaturalOrdering() {}\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__NaturalOrdering__fdd8ec19.java", "base_sample_id": "source-2a11921bb9529e31", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/NaturalOrdering.java", "interference": "lower-for-to-while", "level": 13, "line_count": 69, "local_path": "control-flow/lower-for-to-while/I13__google-guava__NaturalOrdering__a94bb698.java", "order": 13, "original_content_sha256": "69e192c7980e89f70ceb5bfeb5c6736ae7611c13d4ed2571f8079f608e5bb73f", "parent_variant_id": "int-8242fdd8ec19-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/NaturalOrdering.java#L28-L87", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "NaturalOrdering", "variant_id": "int-f261a94bb698-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 588, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cb802694728d-SRC", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E peek();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E next();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */\n  @Override\n  void remove();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": null, "level": 0, "line_count": 57, "local_path": "source-original/SRC__google-guava__PeekingIterator__2694728d.java", "order": 0, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-cb802694728d-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 603, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3af64ef22dd8-I01", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n\n\n\n\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  \n\n\n\n\n\n\n\n\n  @ParametricNullness\n  E peek();\n\n  \n\n\n\n\n\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E next();\n\n  \n\n\n\n\n\n\n\n\n\n  @Override\n  void remove();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "28d9fd3ee1045d7e4ef5c69e756dd4058f87ed783f377b785996a5ccd402d208", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "remove-comments", "level": 1, "line_count": 57, "local_path": "comments/remove-comments/I01__google-guava__PeekingIterator__4ef22dd8.java", "order": 1, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1227, "comments_removed": 4}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-3af64ef22dd8-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 604, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e69ef667e42e-I02", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E pee();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E nex();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */\n  @Override\n  void rem();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "5ed7f0d35555d1832e82df8be8eb1f4c901265e99041454b4de7973eb5aca5d3", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "shorten-identifiers", "level": 2, "line_count": 57, "local_path": "identifiers/shorten-identifiers/I02__google-guava__PeekingIterator__f667e42e.java", "order": 2, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-e69ef667e42e-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 605, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-50032eb97bc4-I03", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E load();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E send();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */\n  @Override\n  void choose();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "754613a8d4ac64875827b5e31f9714e89d42ab884a20c6496cb7b78d2836b200", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "mislead-identifiers", "level": 3, "line_count": 57, "local_path": "identifiers/mislead-identifiers/I03__google-guava__PeekingIterator__2eb97bc4.java", "order": 3, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 0, "local_random_pool_selections": 0, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 3, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 0}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-50032eb97bc4-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 606, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b49cda57e1f1-I04", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E a();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E b();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */\n  @Override\n  void c();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "32fe22fae288a3fe2f0feaa0f20bd14cb9fe3f62150f1ef59fc8257abe0a632b", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "garble-identifiers", "level": 4, "line_count": 57, "local_path": "identifiers/garble-identifiers/I04__google-guava__PeekingIterator__da57e1f1.java", "order": 4, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-b49cda57e1f1-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 607, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5612e3b3baeb-I05", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E peek();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E next();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */\n  @Override\n  void remove();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "encode-integer-literals", "level": 5, "line_count": 57, "local_path": "expressions/encode-integer-literals/I05__google-guava__PeekingIterator__e3b3baeb.java", "order": 5, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-5612e3b3baeb-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 608, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b189e21fbb48-I06", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E peek();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E next();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */\n  @Override\n  void remove();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "invert-conditions", "level": 6, "line_count": 57, "local_path": "expressions/invert-conditions/I06__google-guava__PeekingIterator__e21fbb48.java", "order": 6, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-b189e21fbb48-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 609, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-51d3d494eeea-I07", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E peek();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E next();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */\n  @Override\n  void remove();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "insert-dead-branches", "level": 7, "line_count": 57, "local_path": "code-injection/insert-dead-branches/I07__google-guava__PeekingIterator__d494eeea.java", "order": 7, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-51d3d494eeea-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 610, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-32b232318ada-I08", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E peek();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E next();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */\n  @Override\n  void remove();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 57, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__PeekingIterator__32318ada.java", "order": 8, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-32b232318ada-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 611, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-165c88506e36-I09", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E peek();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E next();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */\n  @Override\n  void remove();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 57, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__PeekingIterator__88506e36.java", "order": 9, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-165c88506e36-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 612, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-160c8d2dea0c-I10", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator; import java.util.NoSuchElementException; import org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */ @DoNotMock(\"Use Iterators.peekingIterator\") @GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E peek();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness E next();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */ @Override void remove(); }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "08e7c2eb0e6e260789312a46ecb7c8a3137a534df22ad0e2c9ca5cbbf9746c46", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "partially-compact-layout", "level": 10, "line_count": 49, "local_path": "layout/partially-compact-layout/I10__google-guava__PeekingIterator__8d2dea0c.java", "order": 10, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 22, "line_break_groups_removed": 8, "line_breaks_removed": 8, "whitespace_characters_removed": 6}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-160c8d2dea0c-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 613, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3749a6b82f28-I11", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E peek();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E next();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */\n  @Override\n  void remove();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 57, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__PeekingIterator__a6b82f28.java", "order": 11, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-3749a6b82f28-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 614, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e6cff03bbbff-I12", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E peek();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E next();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */\n  @Override\n  void remove();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 57, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__PeekingIterator__f03bbbff.java", "order": 12, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-e6cff03bbbff-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 615, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cb98e370cce6-I13", "source": "package com.google.common.collect;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport com.google.errorprone.annotations.DoNotMock;\nimport java.util.Iterator;\nimport java.util.NoSuchElementException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An iterator that supports a one-element lookahead while iterating.\n *\n * <p>See the Guava User Guide article on <a href=\n * \"https://github.com/google/guava/wiki/CollectionHelpersExplained#peekingiterator\">{@code\n * PeekingIterator}</a>.\n *\n * @author Mick Killianey\n * @since 2.0\n */\n@DoNotMock(\"Use Iterators.peekingIterator\")\n@GwtCompatible\npublic interface PeekingIterator<E extends @Nullable Object> extends Iterator<E> {\n  /**\n   * Returns the next element in the iteration, without advancing the iteration.\n   *\n   * <p>Calls to {@code peek()} should not change the state of the iteration, except that it\n   * <i>may</i> prevent removal of the most recent element via {@link #remove()}.\n   *\n   * @throws NoSuchElementException if the iteration has no more elements according to {@link\n   *     #hasNext()}\n   */\n  @ParametricNullness\n  E peek();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>The objects returned by consecutive calls to {@link #peek()} then {@link #next()} are\n   * guaranteed to be equal to each other.\n   */\n  @CanIgnoreReturnValue\n  @Override\n  @ParametricNullness\n  E next();\n\n  /**\n   * {@inheritDoc}\n   *\n   * <p>Implementations may or may not support removal when a call to {@link #peek()} has occurred\n   * since the most recent call to {@link #next()}.\n   *\n   * @throws IllegalStateException if there has been a call to {@link #peek()} since the most recent\n   *     call to {@link #next()} and this implementation does not support this sequence of calls\n   *     (optional)\n   */\n  @Override\n  void remove();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__PeekingIterator__2694728d.java", "base_sample_id": "source-c5351356c8583011", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/PeekingIterator.java", "interference": "lower-for-to-while", "level": 13, "line_count": 57, "local_path": "control-flow/lower-for-to-while/I13__google-guava__PeekingIterator__e370cce6.java", "order": 13, "original_content_sha256": "149dbdfcd984a1f28d5b4e3b2c1b24e36f6748a2d3457fa6830e624851605633", "parent_variant_id": "int-cb802694728d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/PeekingIterator.java#L26-L74", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "PeekingIterator", "variant_id": "int-cb98e370cce6-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 616, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-962253af936f-SRC", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean hasSameComparator(Comparator<?> comparator, Iterable<?> elements) {\n    checkNotNull(comparator);\n    checkNotNull(elements);\n    Comparator<?> comparator2;\n    if (elements instanceof SortedSet) {\n      comparator2 = comparator((SortedSet<?>) elements);\n    } else if (elements instanceof SortedIterable) {\n      comparator2 = ((SortedIterable<?>) elements).comparator();\n    } else {\n      return false;\n    }\n    return comparator.equals(comparator2);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n  // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> comparator(\n      SortedSet<E> sortedSet) {\n    Comparator<? super E> result = sortedSet.comparator();\n    if (result == null) {\n      result = (Comparator<? super E>) Ordering.natural();\n    }\n    return result;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": null, "level": 0, "line_count": 45, "local_path": "source-original/SRC__google-guava__SortedIterables__53af936f.java", "order": 0, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-962253af936f-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 645, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-09532fc3687b-I01", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {}\n\n  \n\n\n\n  public static boolean hasSameComparator(Comparator<?> comparator, Iterable<?> elements) {\n    checkNotNull(comparator);\n    checkNotNull(elements);\n    Comparator<?> comparator2;\n    if (elements instanceof SortedSet) {\n      comparator2 = comparator((SortedSet<?>) elements);\n    } else if (elements instanceof SortedIterable) {\n      comparator2 = ((SortedIterable<?>) elements).comparator();\n    } else {\n      return false;\n    }\n    return comparator.equals(comparator2);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n   \n  public static <E extends @Nullable Object> Comparator<? super E> comparator(\n      SortedSet<E> sortedSet) {\n    Comparator<? super E> result = sortedSet.comparator();\n    if (result == null) {\n      result = (Comparator<? super E>) Ordering.natural();\n    }\n    return result;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "abccc493e505a1b87941676a04ca79cf0f0291e40d391566b0ace3d5eb700d85", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "remove-comments", "level": 1, "line_count": 45, "local_path": "comments/remove-comments/I01__google-guava__SortedIterables__2fc3687b.java", "order": 1, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 298, "comments_removed": 3}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-09532fc3687b-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 646, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-303ddfa86781-I02", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean has(Comparator<?> com2, Iterable<?> ele) {\n    checkNotNull(com2);\n    checkNotNull(ele);\n    Comparator<?> comparator;\n    if (ele instanceof SortedSet) {\n      comparator = com((SortedSet<?>) ele);\n    } else if (ele instanceof SortedIterable) {\n      comparator = ((SortedIterable<?>) ele).comparator();\n    } else {\n      return false;\n    }\n    return com2.equals(comparator);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n  // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> com(\n      SortedSet<E> sorted) {\n    Comparator<? super E> res = sorted.comparator();\n    if (res == null) {\n      res = (Comparator<? super E>) Ordering.natural();\n    }\n    return res;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "c1e9898e4b893caa11551ae242e904c9ba34d569974b1b3548aef69362857f62", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "shorten-identifiers", "level": 2, "line_count": 45, "local_path": "identifiers/shorten-identifiers/I02__google-guava__SortedIterables__dfa86781.java", "order": 2, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 14, "identifiers_declared": 5, "local_name_collisions_avoided": 1, "method_calls_renamed": 1, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-303ddfa86781-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 647, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a7d6c932cfb0-I03", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean validateSession(Comparator<?> finalValue, Iterable<?> finalKey) {\n    checkNotNull(finalValue);\n    checkNotNull(finalKey);\n    Comparator<?> activeCache;\n    if (finalKey instanceof SortedSet) {\n      activeCache = buildToken((SortedSet<?>) finalKey);\n    } else if (finalKey instanceof SortedIterable) {\n      activeCache = ((SortedIterable<?>) finalKey).comparator();\n    } else {\n      return false;\n    }\n    return finalValue.equals(activeCache);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n  // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> buildToken(\n      SortedSet<E> nextIndex) {\n    Comparator<? super E> offset = nextIndex.comparator();\n    if (offset == null) {\n      offset = (Comparator<? super E>) Ordering.natural();\n    }\n    return offset;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "987f04e98dc592b8fc37e6f7ecf237b4b0f7632b9d8a701f397def0b77d24d40", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "mislead-identifiers", "level": 3, "line_count": 45, "local_path": "identifiers/mislead-identifiers/I03__google-guava__SortedIterables__c932cfb0.java", "order": 3, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 14, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 5, "local_random_pool_selections": 5, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 1, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 1, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 2}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-a7d6c932cfb0-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 648, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-37dafbc121bb-I04", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean a(Comparator<?> a, Iterable<?> b) {\n    checkNotNull(a);\n    checkNotNull(b);\n    Comparator<?> c;\n    if (b instanceof SortedSet) {\n      c = b((SortedSet<?>) b);\n    } else if (b instanceof SortedIterable) {\n      c = ((SortedIterable<?>) b).comparator();\n    } else {\n      return false;\n    }\n    return a.equals(c);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n  // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> b(\n      SortedSet<E> d) {\n    Comparator<? super E> e = d.comparator();\n    if (e == null) {\n      e = (Comparator<? super E>) Ordering.natural();\n    }\n    return e;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "bfe5b96fec4bd8b9252245c76852737c5ec6594c0fd870f5c17932b8ecbb5f7c", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "garble-identifiers", "level": 4, "line_count": 45, "local_path": "identifiers/garble-identifiers/I04__google-guava__SortedIterables__fbc121bb.java", "order": 4, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 14, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 1, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-37dafbc121bb-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 649, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d14caab1c0b9-I05", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean hasSameComparator(Comparator<?> comparator, Iterable<?> elements) {\n    checkNotNull(comparator);\n    checkNotNull(elements);\n    Comparator<?> comparator2;\n    if (elements instanceof SortedSet) {\n      comparator2 = comparator((SortedSet<?>) elements);\n    } else if (elements instanceof SortedIterable) {\n      comparator2 = ((SortedIterable<?>) elements).comparator();\n    } else {\n      return false;\n    }\n    return comparator.equals(comparator2);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n  // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> comparator(\n      SortedSet<E> sortedSet) {\n    Comparator<? super E> result = sortedSet.comparator();\n    if (result == null) {\n      result = (Comparator<? super E>) Ordering.natural();\n    }\n    return result;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "encode-integer-literals", "level": 5, "line_count": 45, "local_path": "expressions/encode-integer-literals/I05__google-guava__SortedIterables__aab1c0b9.java", "order": 5, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-d14caab1c0b9-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 650, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9bb8f4c5cedd-I06", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean hasSameComparator(Comparator<?> comparator, Iterable<?> elements) {\n    checkNotNull(comparator);\n    checkNotNull(elements);\n    Comparator<?> comparator2;\n    if (!((elements instanceof SortedSet))) { if (elements instanceof SortedIterable) {\n      comparator2 = ((SortedIterable<?>) elements).comparator();\n    } else {\n      return false;\n    } } else {\n      comparator2 = comparator((SortedSet<?>) elements);\n    }\n    return comparator.equals(comparator2);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n  // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> comparator(\n      SortedSet<E> sortedSet) {\n    Comparator<? super E> result = sortedSet.comparator();\n    if (!((result == null))) {} else {\n      result = (Comparator<? super E>) Ordering.natural();\n    }\n    return result;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "2f9ffe1e2e36325b2e869a96f8d642e7d13e329a810feae4c5f9a2c687b3b666", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "invert-conditions", "level": 6, "line_count": 45, "local_path": "expressions/invert-conditions/I06__google-guava__SortedIterables__f4c5cedd.java", "order": 6, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-9bb8f4c5cedd-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 651, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9e825d04e646-I07", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {\nif (((0xD7DF ^ 0xD7DF) != 0)) { throw new AssertionError(); }\n}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean hasSameComparator(Comparator<?> comparator, Iterable<?> elements) {\nif (((0xFAD4 ^ 0xFAD4) != 0)) { throw new AssertionError(); }\n\n    checkNotNull(comparator);\n    checkNotNull(elements);\n    Comparator<?> comparator2;\n    if (elements instanceof SortedSet) {\n      comparator2 = comparator((SortedSet<?>) elements);\n    } else if (elements instanceof SortedIterable) {\n      comparator2 = ((SortedIterable<?>) elements).comparator();\n    } else {\n      return false;\n    }\n    return comparator.equals(comparator2);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n  // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> comparator(\n      SortedSet<E> sortedSet) {\nif (((0xD066 ^ 0xD066) != 0)) { throw new AssertionError(); }\n\n    Comparator<? super E> result = sortedSet.comparator();\n    if (result == null) {\n      result = (Comparator<? super E>) Ordering.natural();\n    }\n    return result;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "1ab4292949e500876cd4f40e2e57aededd960651d2cd1597854166765d08bae7", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "insert-dead-branches", "level": 7, "line_count": 51, "local_path": "code-injection/insert-dead-branches/I07__google-guava__SortedIterables__5d04e646.java", "order": 7, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 3}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-9e825d04e646-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 652, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a827712a2348-I08", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean hasSameComparator(Comparator<?> comparator, Iterable<?> elements) {\n    checkNotNull(comparator);\n    checkNotNull(elements);\n    Comparator<?> comparator2;\n    if (elements instanceof SortedSet) {\n      comparator2 = comparator((SortedSet<?>) elements);\n    } else if (elements instanceof SortedIterable) {\n      comparator2 = ((SortedIterable<?>) elements).comparator();\n    } else {\n      return false;\n    }\n    return comparator.equals(comparator2);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n  // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> comparator(\n      SortedSet<E> sortedSet) {\n{\n  boolean featureEnabled = false;\n  for (int toggleCount = 0; toggleCount < 3; toggleCount++) {\n    featureEnabled = !featureEnabled;\n  }\n}\n\n    Comparator<? super E> result = sortedSet.comparator();\n    if (result == null) {\n      result = (Comparator<? super E>) Ordering.natural();\n    }\n    return result;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "546f61d44a45c96fe62ed744f11cb16f122df18eb0584ed91dd0a98fb4b071af", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 52, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__SortedIterables__712a2348.java", "order": 8, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 7}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-a827712a2348-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 653, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-587e164f23d3-I09", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean hasSameComparator(Comparator<?> comparator, Iterable<?> elements) {\n{int lI0O_eb500e93=0,lI0O_1ffabb85=0;while(lI0O_1ffabb85<2){lI0O_eb500e93^=(lI0O_1ffabb85<<1)^0x5;lI0O_1ffabb85++;}lI0O_eb500e93^=lI0O_eb500e93;}\n\n    checkNotNull(comparator);\n    checkNotNull(elements);\n    Comparator<?> comparator2;\n    if (elements instanceof SortedSet) {\n      comparator2 = comparator((SortedSet<?>) elements);\n    } else if (elements instanceof SortedIterable) {\n      comparator2 = ((SortedIterable<?>) elements).comparator();\n    } else {\n      return false;\n    }\n    return comparator.equals(comparator2);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n  // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> comparator(\n      SortedSet<E> sortedSet) {\n    Comparator<? super E> result = sortedSet.comparator();\n    if (result == null) {\n      result = (Comparator<? super E>) Ordering.natural();\n    }\n    return result;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "c2e5ddd0933dcb8f1e0942e58d115836a52db9143fe0162345f2422cd32bb192", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 47, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__SortedIterables__164f23d3.java", "order": 9, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 2}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-587e164f23d3-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 654, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7af80496fa35-I10", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible; import java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible final class SortedIterables { private SortedIterables() {}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean hasSameComparator(Comparator<?> comparator, Iterable<?> elements) {\n    checkNotNull(comparator);\n    checkNotNull(elements);\n    Comparator<?> comparator2; if (elements instanceof SortedSet) { comparator2 = comparator((SortedSet<?>) elements);\n    } else if (elements instanceof SortedIterable) {\n      comparator2 = ((SortedIterable<?>) elements).comparator();\n    } else {\n      return false;\n    } return comparator.equals(comparator2); }\n\n  @SuppressWarnings(\"unchecked\") // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> comparator( SortedSet<E> sortedSet) {\n    Comparator<? super E> result = sortedSet.comparator(); if (result == null) { result = (Comparator<? super E>) Ordering.natural();\n    }\n    return result; } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "2da37d212bce80486f7424cf0857717c4febf477a78de75cbea32fff8c1fd67f", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "partially-compact-layout", "level": 10, "line_count": 32, "local_path": "layout/partially-compact-layout/I10__google-guava__SortedIterables__0496fa35.java", "order": 10, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 33, "line_break_groups_removed": 13, "line_breaks_removed": 13, "whitespace_characters_removed": 38}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-7af80496fa35-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 655, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b6b329dcfdc9-I11", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean hasSameComparator(Comparator<?> comparator, Iterable<?> elements) {\n    checkNotNull(comparator);\n    checkNotNull(elements);\n    Comparator<?> comparator2;\n    if (elements instanceof SortedSet) {\n      comparator2 = comparator((SortedSet<?>) elements);\n    } else if (elements instanceof SortedIterable) {\n      comparator2 = ((SortedIterable<?>) elements).comparator();\n    } else {\n      return false;\n    }\n    return comparator.equals(comparator2);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n  // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> comparator(\n      SortedSet<E> sortedSet) {\n    Comparator<? super E> result = sortedSet.comparator();\n    if (result == null) {\n      result = (Comparator<? super E>) Ordering.natural();\n    }\n    return result;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 45, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__SortedIterables__29dcfdc9.java", "order": 11, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-b6b329dcfdc9-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 656, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9db85e943653-I12", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean hasSameComparator(Comparator<?> comparator, Iterable<?> elements) {\n    checkNotNull(comparator);\n    checkNotNull(elements);\n    Comparator<?> comparator2;\n    if (elements instanceof SortedSet) {\n      comparator2 = comparator((SortedSet<?>) elements);\n    } else if (elements instanceof SortedIterable) {\n      comparator2 = ((SortedIterable<?>) elements).comparator();\n    } else {\n      return false;\n    }\n    return comparator.equals(comparator2);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n  // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> comparator(\n      SortedSet<E> sortedSet) {\n    Comparator<? super E> result = sortedSet.comparator();\n    if (result == null) {\n      result = (Comparator<? super E>) Ordering.natural();\n    }\n    return result;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 45, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__SortedIterables__5e943653.java", "order": 12, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-9db85e943653-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 657, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-85981f95d32a-I13", "source": "package com.google.common.collect;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Comparator;\nimport java.util.SortedSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utilities for dealing with sorted collections of all types.\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class SortedIterables {\n  private SortedIterables() {}\n\n  /**\n   * Returns {@code true} if {@code elements} is a sorted collection using an ordering equivalent to\n   * {@code comparator}.\n   */\n  public static boolean hasSameComparator(Comparator<?> comparator, Iterable<?> elements) {\n    checkNotNull(comparator);\n    checkNotNull(elements);\n    Comparator<?> comparator2;\n    if (elements instanceof SortedSet) {\n      comparator2 = comparator((SortedSet<?>) elements);\n    } else if (elements instanceof SortedIterable) {\n      comparator2 = ((SortedIterable<?>) elements).comparator();\n    } else {\n      return false;\n    }\n    return comparator.equals(comparator2);\n  }\n\n  @SuppressWarnings(\"unchecked\")\n  // if sortedSet.comparator() is null, the set must be naturally ordered\n  public static <E extends @Nullable Object> Comparator<? super E> comparator(\n      SortedSet<E> sortedSet) {\n    Comparator<? super E> result = sortedSet.comparator();\n    if (result == null) {\n      result = (Comparator<? super E>) Ordering.natural();\n    }\n    return result;\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__SortedIterables__53af936f.java", "base_sample_id": "source-f840c37afbeef4f1", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/SortedIterables.java", "interference": "lower-for-to-while", "level": 13, "line_count": 45, "local_path": "control-flow/lower-for-to-while/I13__google-guava__SortedIterables__1f95d32a.java", "order": 13, "original_content_sha256": "536a22c9e9afd2f4a60c282148fae839175e479121ee476ef836cc9117a3587a", "parent_variant_id": "int-962253af936f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/SortedIterables.java#L24-L61", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "SortedIterables", "variant_id": "int-85981f95d32a-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 658, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e90eb2d0372f-SRC", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {\n    super(delegate);\n  }\n\n  @Override\n  protected SortedMultiset<E> delegate() {\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegate().comparator();\n  }\n\n  @Override\n  NavigableSet<E> createElementSet() {\n    return unmodifiableNavigableSet(delegate().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    UnmodifiableSortedMultiset<E> result = descendingMultiset;\n    if (result == null) {\n      result = new UnmodifiableSortedMultiset<>(delegate().descendingMultiset());\n      result.descendingMultiset = this;\n      return descendingMultiset = result;\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return delegate().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return delegate().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E upperBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().headMultiset(upperBound, boundType));\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E lowerBound,\n      BoundType lowerBoundType,\n      @ParametricNullness E upperBound,\n      BoundType upperBoundType) {\n    return Multisets.unmodifiableSortedMultiset(\n        delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType));\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E lowerBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().tailMultiset(lowerBound, boundType));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": null, "level": 0, "line_count": 104, "local_path": "source-original/SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "order": 0, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-e90eb2d0372f-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 673, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8fab050b4b39-I01", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {\n    super(delegate);\n  }\n\n  @Override\n  protected SortedMultiset<E> delegate() {\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegate().comparator();\n  }\n\n  @Override\n  NavigableSet<E> createElementSet() {\n    return unmodifiableNavigableSet(delegate().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n   \n   \n   \n   \n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    UnmodifiableSortedMultiset<E> result = descendingMultiset;\n    if (result == null) {\n      result = new UnmodifiableSortedMultiset<>(delegate().descendingMultiset());\n      result.descendingMultiset = this;\n      return descendingMultiset = result;\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return delegate().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return delegate().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E upperBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().headMultiset(upperBound, boundType));\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E lowerBound,\n      BoundType lowerBoundType,\n      @ParametricNullness E upperBound,\n      BoundType upperBoundType) {\n    return Multisets.unmodifiableSortedMultiset(\n        delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType));\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E lowerBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().tailMultiset(lowerBound, boundType));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "af8f61eea8ef2994f1eff261b0a7240d4b434e37a202c03d21a1b3f17527ce5a", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "remove-comments", "level": 1, "line_count": 104, "local_path": "comments/remove-comments/I01__google-guava__UnmodifiableSortedMultiset__050b4b39.java", "order": 1, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 563, "comments_removed": 5}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-8fab050b4b39-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 674, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4c07a4bd17c1-I02", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> del) {\n    super(del);\n  }\n\n  @Override\n  protected SortedMultiset<E> del() {\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> com() {\n    return del().comparator();\n  }\n\n  @Override\n  NavigableSet<E> create() {\n    return unmodifiableNavigableSet(del().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> element() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> descending() {\n    UnmodifiableSortedMultiset<E> res = descendingMultiset;\n    if (res == null) {\n      res = new UnmodifiableSortedMultiset<>(del().descendingMultiset());\n      res.descendingMultiset = this;\n      return descendingMultiset = res;\n    }\n    return res;\n  }\n\n  @Override\n  public @Nullable Entry<E> first() {\n    return del().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> last() {\n    return del().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> poll() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> poll2() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> head(@ParametricNullness E upper, BoundType bound) {\n    return Multisets.unmodifiableSortedMultiset(del().headMultiset(upper, bound));\n  }\n\n  @Override\n  public SortedMultiset<E> sub(\n      @ParametricNullness E lower,\n      BoundType lower2,\n      @ParametricNullness E upper2,\n      BoundType upper3) {\n    return Multisets.unmodifiableSortedMultiset(\n        del().subMultiset(lower, lower2, upper2, upper3));\n  }\n\n  @Override\n  public SortedMultiset<E> tail(@ParametricNullness E lower3, BoundType bound2) {\n    return Multisets.unmodifiableSortedMultiset(del().tailMultiset(lower3, bound2));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "64301b15a70cd0dfdc30c8710075cbf6f9b8104ae06918fd2de193f25812c28d", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "shorten-identifiers", "level": 2, "line_count": 104, "local_path": "identifiers/shorten-identifiers/I02__google-guava__UnmodifiableSortedMultiset__a4bd17c1.java", "order": 2, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 14, "identifiers_declared": 10, "local_name_collisions_avoided": 5, "method_calls_renamed": 8, "method_declarations_renamed": 12, "method_name_collisions_avoided": 1, "method_name_groups": 12}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-4c07a4bd17c1-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 675, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7bef4dace354-I03", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> nextMode) {\n    super(nextMode);\n  }\n\n  @Override\n  protected SortedMultiset<E> saveUser() {\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> checkState() {\n    return saveUser().comparator();\n  }\n\n  @Override\n  NavigableSet<E> validateMessage() {\n    return unmodifiableNavigableSet(saveUser().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> sendRecord() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> validateSession() {\n    UnmodifiableSortedMultiset<E> window = descendingMultiset;\n    if (window == null) {\n      window = new UnmodifiableSortedMultiset<>(saveUser().descendingMultiset());\n      window.descendingMultiset = this;\n      return descendingMultiset = window;\n    }\n    return window;\n  }\n\n  @Override\n  public @Nullable Entry<E> checkOrder() {\n    return saveUser().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> serialize() {\n    return saveUser().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> validateBuffer() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> validateCount() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> checkAddress(@ParametricNullness E localState, BoundType nextCount) {\n    return Multisets.unmodifiableSortedMultiset(saveUser().headMultiset(localState, nextCount));\n  }\n\n  @Override\n  public SortedMultiset<E> sendSession(\n      @ParametricNullness E finalCount,\n      BoundType defaultBalance,\n      @ParametricNullness E secureData,\n      BoundType primaryAccount) {\n    return Multisets.unmodifiableSortedMultiset(\n        saveUser().subMultiset(finalCount, defaultBalance, secureData, primaryAccount));\n  }\n\n  @Override\n  public SortedMultiset<E> validateNode(@ParametricNullness E nextRecord, BoundType timestamp) {\n    return Multisets.unmodifiableSortedMultiset(saveUser().tailMultiset(nextRecord, timestamp));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "da82a63737e75890c5e2799f1b3779826dd889d7720bbbe41088a48dbde1f5aa", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "mislead-identifiers", "level": 3, "line_count": 104, "local_path": "identifiers/mislead-identifiers/I03__google-guava__UnmodifiableSortedMultiset__4dace354.java", "order": 3, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 14, "identifiers_declared": 10, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 10, "local_random_pool_selections": 10, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 8, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 12, "method_exact_length_matches": 10, "method_name_groups": 12, "method_random_pool_selections": 12, "method_total_length_difference": 4}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-7bef4dace354-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 676, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e3826f080c24-I04", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> a) {\n    super(a);\n  }\n\n  @Override\n  protected SortedMultiset<E> a() {\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> b() {\n    return a().comparator();\n  }\n\n  @Override\n  NavigableSet<E> c() {\n    return unmodifiableNavigableSet(a().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> d() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> e() {\n    UnmodifiableSortedMultiset<E> b = descendingMultiset;\n    if (b == null) {\n      b = new UnmodifiableSortedMultiset<>(a().descendingMultiset());\n      b.descendingMultiset = this;\n      return descendingMultiset = b;\n    }\n    return b;\n  }\n\n  @Override\n  public @Nullable Entry<E> f() {\n    return a().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> g() {\n    return a().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> h() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> i() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> j(@ParametricNullness E c, BoundType d) {\n    return Multisets.unmodifiableSortedMultiset(a().headMultiset(c, d));\n  }\n\n  @Override\n  public SortedMultiset<E> k(\n      @ParametricNullness E e,\n      BoundType f,\n      @ParametricNullness E g,\n      BoundType h) {\n    return Multisets.unmodifiableSortedMultiset(\n        a().subMultiset(e, f, g, h));\n  }\n\n  @Override\n  public SortedMultiset<E> l(@ParametricNullness E i, BoundType j) {\n    return Multisets.unmodifiableSortedMultiset(a().tailMultiset(i, j));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "bc310d740d933abd264665801f303f71280f33f80e278a8a7d10021df56c17d3", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "garble-identifiers", "level": 4, "line_count": 104, "local_path": "identifiers/garble-identifiers/I04__google-guava__UnmodifiableSortedMultiset__6f080c24.java", "order": 4, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 14, "identifiers_declared": 10, "local_name_collisions_avoided": 0, "method_calls_renamed": 8, "method_declarations_renamed": 12, "method_name_collisions_avoided": 0, "method_name_groups": 12}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-e3826f080c24-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 677, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-66a295ee493a-I05", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {\n    super(delegate);\n  }\n\n  @Override\n  protected SortedMultiset<E> delegate() {\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegate().comparator();\n  }\n\n  @Override\n  NavigableSet<E> createElementSet() {\n    return unmodifiableNavigableSet(delegate().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    UnmodifiableSortedMultiset<E> result = descendingMultiset;\n    if (result == null) {\n      result = new UnmodifiableSortedMultiset<>(delegate().descendingMultiset());\n      result.descendingMultiset = this;\n      return descendingMultiset = result;\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return delegate().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return delegate().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E upperBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().headMultiset(upperBound, boundType));\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E lowerBound,\n      BoundType lowerBoundType,\n      @ParametricNullness E upperBound,\n      BoundType upperBoundType) {\n    return Multisets.unmodifiableSortedMultiset(\n        delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType));\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E lowerBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().tailMultiset(lowerBound, boundType));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0x0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "dd23d58bb319d1d007b1d8657c71d74f81bcc115c12374ec9782cce290ca85d2", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "encode-integer-literals", "level": 5, "line_count": 104, "local_path": "expressions/encode-integer-literals/I05__google-guava__UnmodifiableSortedMultiset__95ee493a.java", "order": 5, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-66a295ee493a-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 678, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f0653583b290-I06", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {\n    super(delegate);\n  }\n\n  @Override\n  protected SortedMultiset<E> delegate() {\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegate().comparator();\n  }\n\n  @Override\n  NavigableSet<E> createElementSet() {\n    return unmodifiableNavigableSet(delegate().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    UnmodifiableSortedMultiset<E> result = descendingMultiset;\n    if (!((result == null))) {} else {\n      result = new UnmodifiableSortedMultiset<>(delegate().descendingMultiset());\n      result.descendingMultiset = this;\n      return descendingMultiset = result;\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return delegate().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return delegate().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E upperBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().headMultiset(upperBound, boundType));\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E lowerBound,\n      BoundType lowerBoundType,\n      @ParametricNullness E upperBound,\n      BoundType upperBoundType) {\n    return Multisets.unmodifiableSortedMultiset(\n        delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType));\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E lowerBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().tailMultiset(lowerBound, boundType));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "fd7b2f1d12741988e40485c563704adf9c3e494131209a6eaaece3c52a6c2d84", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "invert-conditions", "level": 6, "line_count": 104, "local_path": "expressions/invert-conditions/I06__google-guava__UnmodifiableSortedMultiset__3583b290.java", "order": 6, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-f0653583b290-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 679, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3cb1aa1f7535-I07", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {\n    super(delegate);\nif (((0x494A ^ 0x494A) != 0)) { throw new AssertionError(); }\n\n  }\n\n  @Override\n  protected SortedMultiset<E> delegate() {\nif (((0x3A94 ^ 0x3A94) != 0)) { throw new AssertionError(); }\n\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\nif (((0xF02D ^ 0xF02D) != 0)) { throw new AssertionError(); }\n\n    return delegate().comparator();\n  }\n\n  @Override\n  NavigableSet<E> createElementSet() {\nif (((0x12B1 ^ 0x12B1) != 0)) { throw new AssertionError(); }\n\n    return unmodifiableNavigableSet(delegate().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> elementSet() {\nif (((0x73B2 ^ 0x73B2) != 0)) { throw new AssertionError(); }\n\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\nif (((0x3489 ^ 0x3489) != 0)) { throw new AssertionError(); }\n\n    UnmodifiableSortedMultiset<E> result = descendingMultiset;\n    if (result == null) {\n      result = new UnmodifiableSortedMultiset<>(delegate().descendingMultiset());\n      result.descendingMultiset = this;\n      return descendingMultiset = result;\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\nif (((0xC76F ^ 0xC76F) != 0)) { throw new AssertionError(); }\n\n    return delegate().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\nif (((0x59EC ^ 0x59EC) != 0)) { throw new AssertionError(); }\n\n    return delegate().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\nif (((0x1ED5 ^ 0x1ED5) != 0)) { throw new AssertionError(); }\n\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\nif (((0xF758 ^ 0xF758) != 0)) { throw new AssertionError(); }\n\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E upperBound, BoundType boundType) {\nif (((0x7F5D ^ 0x7F5D) != 0)) { throw new AssertionError(); }\n\n    return Multisets.unmodifiableSortedMultiset(delegate().headMultiset(upperBound, boundType));\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E lowerBound,\n      BoundType lowerBoundType,\n      @ParametricNullness E upperBound,\n      BoundType upperBoundType) {\nif (((0x6CA8 ^ 0x6CA8) != 0)) { throw new AssertionError(); }\n\n    return Multisets.unmodifiableSortedMultiset(\n        delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType));\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E lowerBound, BoundType boundType) {\nif (((0x3238 ^ 0x3238) != 0)) { throw new AssertionError(); }\n\n    return Multisets.unmodifiableSortedMultiset(delegate().tailMultiset(lowerBound, boundType));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "6361cfb43ee6314b5f5344a979a5dc7a665450d204af4fd2847df7dba8be695b", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "insert-dead-branches", "level": 7, "line_count": 130, "local_path": "code-injection/insert-dead-branches/I07__google-guava__UnmodifiableSortedMultiset__aa1f7535.java", "order": 7, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 13}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-3cb1aa1f7535-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 680, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-64831abb5951-I08", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {\n    super(delegate);\n{\n  int morningTemperature = 18;\n  int eveningTemperature = 14;\n  int lowerTemperature = morningTemperature;\n  if (eveningTemperature < lowerTemperature) {\n    lowerTemperature = eveningTemperature;\n  }\n}\n\n  }\n\n  @Override\n  protected SortedMultiset<E> delegate() {\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegate().comparator();\n  }\n\n  @Override\n  NavigableSet<E> createElementSet() {\n    return unmodifiableNavigableSet(delegate().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    UnmodifiableSortedMultiset<E> result = descendingMultiset;\n    if (result == null) {\n      result = new UnmodifiableSortedMultiset<>(delegate().descendingMultiset());\n      result.descendingMultiset = this;\n      return descendingMultiset = result;\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return delegate().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return delegate().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E upperBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().headMultiset(upperBound, boundType));\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E lowerBound,\n      BoundType lowerBoundType,\n      @ParametricNullness E upperBound,\n      BoundType upperBoundType) {\n    return Multisets.unmodifiableSortedMultiset(\n        delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType));\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E lowerBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().tailMultiset(lowerBound, boundType));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "abec11bf4de186e82722057fcf5694e64626a44eccb85b26febe9fc33e920ca6", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 113, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__UnmodifiableSortedMultiset__1abb5951.java", "order": 8, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 4}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-64831abb5951-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 681, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-51cb0adfbe93-I09", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {\n    super(delegate);\n  }\n\n  @Override\n  protected SortedMultiset<E> delegate() {\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n{int lI0O_4fd4ebd5=0x9B08-0x9B08;lI0O_4fd4ebd5=(lI0O_4fd4ebd5==0)?(lI0O_4fd4ebd5|0):(lI0O_4fd4ebd5&0);}\n\n    return delegate().comparator();\n  }\n\n  @Override\n  NavigableSet<E> createElementSet() {\n    return unmodifiableNavigableSet(delegate().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    UnmodifiableSortedMultiset<E> result = descendingMultiset;\n    if (result == null) {\n      result = new UnmodifiableSortedMultiset<>(delegate().descendingMultiset());\n      result.descendingMultiset = this;\n      return descendingMultiset = result;\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return delegate().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return delegate().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E upperBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().headMultiset(upperBound, boundType));\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E lowerBound,\n      BoundType lowerBoundType,\n      @ParametricNullness E upperBound,\n      BoundType upperBoundType) {\n    return Multisets.unmodifiableSortedMultiset(\n        delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType));\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E lowerBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().tailMultiset(lowerBound, boundType));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b27e598d3f187992bf90773f9898b6858a29d748a3d1803f039fc86ae10c02d0", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 106, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__UnmodifiableSortedMultiset__0adfbe93.java", "order": 9, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 1}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-51cb0adfbe93-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 682, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3ebe906b4d45-I10", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet; import com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible; import com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator; import java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable; /**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E> implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {\n    super(delegate);\n  }\n\n  @Override\n  protected SortedMultiset<E> delegate() {\n    return (SortedMultiset<E>) super.delegate(); }\n\n  @Override\n  public Comparator<? super E> comparator() { return delegate().comparator();\n  }\n\n  @Override NavigableSet<E> createElementSet() {\n    return unmodifiableNavigableSet(delegate().elementSet()); } @Override\n  public NavigableSet<E> elementSet() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> descendingMultiset() { UnmodifiableSortedMultiset<E> result = descendingMultiset;\n    if (result == null) {\n      result = new UnmodifiableSortedMultiset<>(delegate().descendingMultiset());\n      result.descendingMultiset = this; return descendingMultiset = result;\n    } return result; } @Override public @Nullable Entry<E> firstEntry() {\n    return delegate().firstEntry(); }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return delegate().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() { throw new UnsupportedOperationException(); } @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    throw new UnsupportedOperationException(); }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E upperBound, BoundType boundType) { return Multisets.unmodifiableSortedMultiset(delegate().headMultiset(upperBound, boundType)); } @Override public SortedMultiset<E> subMultiset(\n      @ParametricNullness E lowerBound, BoundType lowerBoundType, @ParametricNullness E upperBound,\n      BoundType upperBoundType) { return Multisets.unmodifiableSortedMultiset(\n        delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType)); }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E lowerBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().tailMultiset(lowerBound, boundType));\n  } @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0; }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "8041625d7a1f1c81f02b7d33d2bb800ece35fb1a4c2319678df561e08e381cc3", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "partially-compact-layout", "level": 10, "line_count": 67, "local_path": "layout/partially-compact-layout/I10__google-guava__UnmodifiableSortedMultiset__906b4d45.java", "order": 10, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 78, "line_break_groups_removed": 31, "line_breaks_removed": 37, "whitespace_characters_removed": 84}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-3ebe906b4d45-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 683, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-23ef98ace082-I11", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {\n    super(delegate);\n  }\n\n  @Override\n  protected SortedMultiset<E> delegate() {\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegate().comparator();\n  }\n\n  @Override\n  NavigableSet<E> createElementSet() {\n    return unmodifiableNavigableSet(delegate().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    UnmodifiableSortedMultiset<E> result = descendingMultiset;\n    if (result == null) {\n      result = new UnmodifiableSortedMultiset<>(delegate().descendingMultiset());\n      result.descendingMultiset = this;\n      return descendingMultiset = result;\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return delegate().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return delegate().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E upperBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().headMultiset(upperBound, boundType));\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E lowerBound,\n      BoundType lowerBoundType,\n      @ParametricNullness E upperBound,\n      BoundType upperBoundType) {\n    return Multisets.unmodifiableSortedMultiset(\n        delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType));\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E lowerBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().tailMultiset(lowerBound, boundType));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 104, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__UnmodifiableSortedMultiset__98ace082.java", "order": 11, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-23ef98ace082-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 684, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7ef2fdf76411-I12", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {\n    super(delegate);\n  }\n\n  @Override\n  protected SortedMultiset<E> delegate() {\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegate().comparator();\n  }\n\n  @Override\n  NavigableSet<E> createElementSet() {\n    return unmodifiableNavigableSet(delegate().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    UnmodifiableSortedMultiset<E> result = descendingMultiset;\n    if (result == null) {\n      result = new UnmodifiableSortedMultiset<>(delegate().descendingMultiset());\n      result.descendingMultiset = this;\n      return descendingMultiset = result;\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return delegate().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return delegate().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E upperBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().headMultiset(upperBound, boundType));\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E lowerBound,\n      BoundType lowerBoundType,\n      @ParametricNullness E upperBound,\n      BoundType upperBoundType) {\n    return Multisets.unmodifiableSortedMultiset(\n        delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType));\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E lowerBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().tailMultiset(lowerBound, boundType));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 104, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__UnmodifiableSortedMultiset__fdf76411.java", "order": 12, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-7ef2fdf76411-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 685, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cb56a5385042-I13", "source": "package com.google.common.collect;\nimport static com.google.common.collect.Sets.unmodifiableNavigableSet;\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.Multisets.UnmodifiableMultiset;\nimport com.google.errorprone.annotations.concurrent.LazyInit;\nimport java.util.Comparator;\nimport java.util.NavigableSet;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Implementation of {@link Multisets#unmodifiableSortedMultiset(SortedMultiset)}, split out into\n * its own file so it can be GWT emulated (to deal with the differing elementSet() types in GWT and\n * non-GWT).\n *\n * @author Louis Wasserman\n */\n@GwtCompatible\nfinal class UnmodifiableSortedMultiset<E extends @Nullable Object> extends UnmodifiableMultiset<E>\n    implements SortedMultiset<E> {\n  UnmodifiableSortedMultiset(SortedMultiset<E> delegate) {\n    super(delegate);\n  }\n\n  @Override\n  protected SortedMultiset<E> delegate() {\n    return (SortedMultiset<E>) super.delegate();\n  }\n\n  @Override\n  public Comparator<? super E> comparator() {\n    return delegate().comparator();\n  }\n\n  @Override\n  NavigableSet<E> createElementSet() {\n    return unmodifiableNavigableSet(delegate().elementSet());\n  }\n\n  @Override\n  public NavigableSet<E> elementSet() {\n    return (NavigableSet<E>) super.elementSet();\n  }\n\n  @LazyInit private transient @Nullable UnmodifiableSortedMultiset<E> descendingMultiset;\n\n  // TODO(b/418181860): This method creates retain cycles in J2ObjC. In order to break the cycle,\n  // there needs to be separate classes for primary and descending multiset, where the primary one\n  // would hold {@code @LazyInit @RetainedWith @Nullable} reference to its descending multiset, and\n  // the other {@code final} reference.\n  @Override\n  public SortedMultiset<E> descendingMultiset() {\n    UnmodifiableSortedMultiset<E> result = descendingMultiset;\n    if (result == null) {\n      result = new UnmodifiableSortedMultiset<>(delegate().descendingMultiset());\n      result.descendingMultiset = this;\n      return descendingMultiset = result;\n    }\n    return result;\n  }\n\n  @Override\n  public @Nullable Entry<E> firstEntry() {\n    return delegate().firstEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> lastEntry() {\n    return delegate().lastEntry();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollFirstEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public @Nullable Entry<E> pollLastEntry() {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public SortedMultiset<E> headMultiset(@ParametricNullness E upperBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().headMultiset(upperBound, boundType));\n  }\n\n  @Override\n  public SortedMultiset<E> subMultiset(\n      @ParametricNullness E lowerBound,\n      BoundType lowerBoundType,\n      @ParametricNullness E upperBound,\n      BoundType upperBoundType) {\n    return Multisets.unmodifiableSortedMultiset(\n        delegate().subMultiset(lowerBound, lowerBoundType, upperBound, upperBoundType));\n  }\n\n  @Override\n  public SortedMultiset<E> tailMultiset(@ParametricNullness E lowerBound, BoundType boundType) {\n    return Multisets.unmodifiableSortedMultiset(delegate().tailMultiset(lowerBound, boundType));\n  }\n\n  @GwtIncompatible @J2ktIncompatible private static final long serialVersionUID = 0;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__UnmodifiableSortedMultiset__b2d0372f.java", "base_sample_id": "source-edf096aa1ea65a24", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java", "interference": "lower-for-to-while", "level": 13, "line_count": 104, "local_path": "control-flow/lower-for-to-while/I13__google-guava__UnmodifiableSortedMultiset__a5385042.java", "order": 13, "original_content_sha256": "1fabe45bb65dcf3f29e7e8ff83913cc729dceb4f130a12ef236c53e3703d154a", "parent_variant_id": "int-e90eb2d0372f-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/collect/UnmodifiableSortedMultiset.java#L30-L122", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "UnmodifiableSortedMultiset", "variant_id": "int-cb56a5385042-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 686, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f2638f2c076b-SRC", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements;\n  // The number of elements in the replacement array.\n  private final int replacementsLength;\n  // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> replacementMap, char safeMin, char safeMax) {\n\n    this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax);\n  }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaperMap, char safeMin, char safeMax) {\n\n    checkNotNull(escaperMap); // GWT specific check (do not optimize)\n    this.replacements = escaperMap.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (safeMax < safeMin) {\n      // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      safeMax = Character.MIN_VALUE;\n      safeMin = Character.MAX_VALUE;\n    }\n    this.safeMin = safeMin;\n    this.safeMax = safeMax;\n  }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String escape(String s) {\n    checkNotNull(s); // GWT specific check (do not optimize).\n    for (int i = 0; i < s.length(); i++) {\n      char c = s.charAt(i);\n      if ((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin) {\n        return escapeSlow(s, i);\n      }\n    }\n    return s;\n  }\n\n  /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] escape(char c) {\n    if (c < replacementsLength) {\n      char[] chars = replacements[c];\n      if (chars != null) {\n        return chars;\n      }\n    }\n    if (c >= safeMin && c <= safeMax) {\n      return null;\n    }\n    return escapeUnsafe(c);\n  }\n\n  /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] escapeUnsafe(char c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": null, "level": 0, "line_count": 134, "local_path": "source-original/SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "order": 0, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-f2638f2c076b-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 365, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6fdaf3f2945d-I01", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n   \n  private final char[][] replacements;\n   \n  private final int replacementsLength;\n   \n  private final char safeMin;\n   \n  private final char safeMax;\n\n  \n\n\n\n\n\n\n\n\n\n\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> replacementMap, char safeMin, char safeMax) {\n\n    this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax);\n  }\n\n  \n\n\n\n\n\n\n\n\n\n\n\n\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaperMap, char safeMin, char safeMax) {\n\n    checkNotNull(escaperMap);  \n    this.replacements = escaperMap.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (safeMax < safeMin) {\n       \n       \n      safeMax = Character.MIN_VALUE;\n      safeMin = Character.MAX_VALUE;\n    }\n    this.safeMin = safeMin;\n    this.safeMax = safeMax;\n  }\n\n  \n\n\n\n  @Override\n  public final String escape(String s) {\n    checkNotNull(s);  \n    for (int i = 0; i < s.length(); i++) {\n      char c = s.charAt(i);\n      if ((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin) {\n        return escapeSlow(s, i);\n      }\n    }\n    return s;\n  }\n\n  \n\n\n\n\n\n\n  @Override\n  protected final char @Nullable [] escape(char c) {\n    if (c < replacementsLength) {\n      char[] chars = replacements[c];\n      if (chars != null) {\n        return chars;\n      }\n    }\n    if (c >= safeMin && c <= safeMax) {\n      return null;\n    }\n    return escapeUnsafe(c);\n  }\n\n  \n\n\n\n\n\n\n\n\n\n\n\n   \n  protected abstract char @Nullable [] escapeUnsafe(char c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "0ed5974fb78ca4aca316dd50d1620a8fd47d29e70e1b2e39f0a13aab7c70890a", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "remove-comments", "level": 1, "line_count": 134, "local_path": "comments/remove-comments/I01__google-guava__ArrayBasedCharEscaper__f3f2945d.java", "order": 1, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 3977, "comments_removed": 15}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-6fdaf3f2945d-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 366, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f1e207bc82dd-I02", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements;\n  // The number of elements in the replacement array.\n  private final int replacementsLength;\n  // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> replacement, char safe, char safe2) {\n\n    this(ArrayBasedEscaperMap.create(replacement), safe, safe2);\n  }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaper, char safe3, char safe4) {\n\n    checkNotNull(escaper); // GWT specific check (do not optimize)\n    this.replacements = escaper.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (safe4 < safe3) {\n      // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      safe4 = Character.MIN_VALUE;\n      safe3 = Character.MAX_VALUE;\n    }\n    this.safeMin = safe3;\n    this.safeMax = safe4;\n  }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String esc(String s) {\n    checkNotNull(s); // GWT specific check (do not optimize).\n    for (int i = 0; i < s.length(); i++) {\n      char c = s.charAt(i);\n      if ((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin) {\n        return escapeSlow(s, i);\n      }\n    }\n    return s;\n  }\n\n  /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] esc(char c) {\n    if (c < replacementsLength) {\n      char[] cha = replacements[c];\n      if (cha != null) {\n        return cha;\n      }\n    }\n    if (c >= safeMin && c <= safeMax) {\n      return null;\n    }\n    return escape(c);\n  }\n\n  /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] escape(char c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "ac8cca4a40fce7a4db764187e30fe360e6177c9edead135d059c8fc9f7e27ffe", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "shorten-identifiers", "level": 2, "line_count": 134, "local_path": "identifiers/shorten-identifiers/I02__google-guava__ArrayBasedCharEscaper__07bc82dd.java", "order": 2, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 31, "identifiers_declared": 12, "local_name_collisions_avoided": 3, "method_calls_renamed": 1, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-f1e207bc82dd-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 367, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-692cf0837ed5-I03", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements;\n  // The number of elements in the replacement array.\n  private final int replacementsLength;\n  // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> defaultMessage, char invoice, char feature) {\n\n    this(ArrayBasedEscaperMap.create(defaultMessage), invoice, feature);\n  }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap localToken, char version, char history) {\n\n    checkNotNull(localToken); // GWT specific check (do not optimize)\n    this.replacements = localToken.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (history < version) {\n      // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      history = Character.MIN_VALUE;\n      version = Character.MAX_VALUE;\n    }\n    this.safeMin = version;\n    this.safeMax = history;\n  }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String handle(String map) {\n    checkNotNull(map); // GWT specific check (do not optimize).\n    for (int age = 0; age < map.length(); age++) {\n      char key = map.charAt(age);\n      if ((key < replacementsLength && replacements[key] != null) || key > safeMax || key < safeMin) {\n        return escapeSlow(map, age);\n      }\n    }\n    return map;\n  }\n\n  /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] handle(char path) {\n    if (path < replacementsLength) {\n      char[] total = replacements[path];\n      if (total != null) {\n        return total;\n      }\n    }\n    if (path >= safeMin && path <= safeMax) {\n      return null;\n    }\n    return refreshEvent(path);\n  }\n\n  /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] refreshEvent(char user);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "22eadcaa44aa8d86ba44c766d26d53976e0d8124bfb5754d9863c8de4e501c2e", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "mislead-identifiers", "level": 3, "line_count": 134, "local_path": "identifiers/mislead-identifiers/I03__google-guava__ArrayBasedCharEscaper__f0837ed5.java", "order": 3, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 31, "identifiers_declared": 12, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 8, "local_exact_length_matches": 7, "local_random_pool_selections": 12, "local_total_length_difference": 12, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 1, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 2, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-692cf0837ed5-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 368, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-35c843334bc9-I04", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements;\n  // The number of elements in the replacement array.\n  private final int replacementsLength;\n  // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> a, char b, char d) {\n\n    this(ArrayBasedEscaperMap.create(a), b, d);\n  }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap e, char f, char g) {\n\n    checkNotNull(e); // GWT specific check (do not optimize)\n    this.replacements = e.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (g < f) {\n      // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      g = Character.MIN_VALUE;\n      f = Character.MAX_VALUE;\n    }\n    this.safeMin = f;\n    this.safeMax = g;\n  }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String a(String h) {\n    checkNotNull(h); // GWT specific check (do not optimize).\n    for (int i = 0; i < h.length(); i++) {\n      char c = h.charAt(i);\n      if ((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin) {\n        return escapeSlow(h, i);\n      }\n    }\n    return h;\n  }\n\n  /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] a(char c) {\n    if (c < replacementsLength) {\n      char[] j = replacements[c];\n      if (j != null) {\n        return j;\n      }\n    }\n    if (c >= safeMin && c <= safeMax) {\n      return null;\n    }\n    return b(c);\n  }\n\n  /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] b(char c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "9f28d894096aacb9b65598b0177eceef7b241cc105b7f5f575a73a90610b4e7e", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "garble-identifiers", "level": 4, "line_count": 134, "local_path": "identifiers/garble-identifiers/I04__google-guava__ArrayBasedCharEscaper__43334bc9.java", "order": 4, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 31, "identifiers_declared": 12, "local_name_collisions_avoided": 0, "method_calls_renamed": 1, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-35c843334bc9-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 369, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5182c1a52b65-I05", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements;\n  // The number of elements in the replacement array.\n  private final int replacementsLength;\n  // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> replacementMap, char safeMin, char safeMax) {\n\n    this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax);\n  }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaperMap, char safeMin, char safeMax) {\n\n    checkNotNull(escaperMap); // GWT specific check (do not optimize)\n    this.replacements = escaperMap.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (safeMax < safeMin) {\n      // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      safeMax = Character.MIN_VALUE;\n      safeMin = Character.MAX_VALUE;\n    }\n    this.safeMin = safeMin;\n    this.safeMax = safeMax;\n  }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String escape(String s) {\n    checkNotNull(s); // GWT specific check (do not optimize).\n    for (int i = 0x0; i < s.length(); i++) {\n      char c = s.charAt(i);\n      if ((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin) {\n        return escapeSlow(s, i);\n      }\n    }\n    return s;\n  }\n\n  /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] escape(char c) {\n    if (c < replacementsLength) {\n      char[] chars = replacements[c];\n      if (chars != null) {\n        return chars;\n      }\n    }\n    if (c >= safeMin && c <= safeMax) {\n      return null;\n    }\n    return escapeUnsafe(c);\n  }\n\n  /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] escapeUnsafe(char c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "c9a5bb93784dd8a12c5c5e40532d51335637e421c7f21d718fc128760fff2fa5", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "encode-integer-literals", "level": 5, "line_count": 134, "local_path": "expressions/encode-integer-literals/I05__google-guava__ArrayBasedCharEscaper__c1a52b65.java", "order": 5, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-5182c1a52b65-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 370, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ecb86316517a-I06", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements;\n  // The number of elements in the replacement array.\n  private final int replacementsLength;\n  // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> replacementMap, char safeMin, char safeMax) {\n\n    this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax);\n  }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaperMap, char safeMin, char safeMax) {\n\n    checkNotNull(escaperMap); // GWT specific check (do not optimize)\n    this.replacements = escaperMap.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (!((safeMax < safeMin))) {} else {\n      // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      safeMax = Character.MIN_VALUE;\n      safeMin = Character.MAX_VALUE;\n    }\n    this.safeMin = safeMin;\n    this.safeMax = safeMax;\n  }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String escape(String s) {\n    checkNotNull(s); // GWT specific check (do not optimize).\n    for (int i = 0; i < s.length(); i++) {\n      char c = s.charAt(i);\n      if (!(((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin))) {} else {\n        return escapeSlow(s, i);\n      }\n    }\n    return s;\n  }\n\n  /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] escape(char c) {\n    if (!((c < replacementsLength))) {} else {\n      char[] chars = replacements[c];\n      if (chars != null) {\n        return chars;\n      }\n    }\n    if (!((c >= safeMin && c <= safeMax))) {} else {\n      return null;\n    }\n    return escapeUnsafe(c);\n  }\n\n  /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] escapeUnsafe(char c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "c74caf3061d77f6fc85093a99d8e5cf1de8135235cfe1ed4f92007390a485c6f", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "invert-conditions", "level": 6, "line_count": 134, "local_path": "expressions/invert-conditions/I06__google-guava__ArrayBasedCharEscaper__6316517a.java", "order": 6, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 4}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-ecb86316517a-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 371, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3d60b5b0aed1-I07", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements;\n  // The number of elements in the replacement array.\n  private final int replacementsLength;\n  // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> replacementMap, char safeMin, char safeMax) {\n\n    this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax);\nif (((0x94DB ^ 0x94DB) != 0)) { throw new AssertionError(); }\n\n  }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaperMap, char safeMin, char safeMax) {\nif (((0xFF07 ^ 0xFF07) != 0)) { throw new AssertionError(); }\n\n\n    checkNotNull(escaperMap); // GWT specific check (do not optimize)\n    this.replacements = escaperMap.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (safeMax < safeMin) {\n      // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      safeMax = Character.MIN_VALUE;\n      safeMin = Character.MAX_VALUE;\n    }\n    this.safeMin = safeMin;\n    this.safeMax = safeMax;\n  }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String escape(String s) {\nif (((0xF91B ^ 0xF91B) != 0)) { throw new AssertionError(); }\n\n    checkNotNull(s); // GWT specific check (do not optimize).\n    for (int i = 0; i < s.length(); i++) {\n      char c = s.charAt(i);\n      if ((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin) {\n        return escapeSlow(s, i);\n      }\n    }\n    return s;\n  }\n\n  /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] escape(char c) {\nif (((0x46F ^ 0x46F) != 0)) { throw new AssertionError(); }\n\n    if (c < replacementsLength) {\n      char[] chars = replacements[c];\n      if (chars != null) {\n        return chars;\n      }\n    }\n    if (c >= safeMin && c <= safeMax) {\n      return null;\n    }\n    return escapeUnsafe(c);\n  }\n\n  /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] escapeUnsafe(char c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "952e7ce343ea7b9c296f5be006cb707c8f4a120147d9c37a66f52b65748ec67d", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "insert-dead-branches", "level": 7, "line_count": 142, "local_path": "code-injection/insert-dead-branches/I07__google-guava__ArrayBasedCharEscaper__b5b0aed1.java", "order": 7, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-3d60b5b0aed1-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 372, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9672e2cd1359-I08", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements;\n  // The number of elements in the replacement array.\n  private final int replacementsLength;\n  // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> replacementMap, char safeMin, char safeMax) {\n\n    this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax);\n  }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaperMap, char safeMin, char safeMax) {\n\n    checkNotNull(escaperMap); // GWT specific check (do not optimize)\n    this.replacements = escaperMap.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (safeMax < safeMin) {\n      // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      safeMax = Character.MIN_VALUE;\n      safeMin = Character.MAX_VALUE;\n    }\n    this.safeMin = safeMin;\n    this.safeMax = safeMax;\n  }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String escape(String s) {\n    checkNotNull(s); // GWT specific check (do not optimize).\n    for (int i = 0; i < s.length(); i++) {\n      char c = s.charAt(i);\n      if ((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin) {\n        return escapeSlow(s, i);\n      }\n    }\n    return s;\n  }\n\n  /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] escape(char c) {\n{\n  int factorial = 1;\n  for (int currentFactor = 2; currentFactor <= 4; currentFactor++) {\n    factorial *= currentFactor;\n  }\n}\n\n    if (c < replacementsLength) {\n      char[] chars = replacements[c];\n      if (chars != null) {\n        return chars;\n      }\n    }\n    if (c >= safeMin && c <= safeMax) {\n      return null;\n    }\n    return escapeUnsafe(c);\n  }\n\n  /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] escapeUnsafe(char c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "e02ed93436ae6f044c949974a0426da61e9bd187a6836ba6250615e876cffe26", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 141, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__ArrayBasedCharEscaper__e2cd1359.java", "order": 8, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 6}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-9672e2cd1359-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 373, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7d814d01f888-I09", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements;\n  // The number of elements in the replacement array.\n  private final int replacementsLength;\n  // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> replacementMap, char safeMin, char safeMax) {\n\n    this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax);\n  }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaperMap, char safeMin, char safeMax) {\n\n    checkNotNull(escaperMap); // GWT specific check (do not optimize)\n    this.replacements = escaperMap.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (safeMax < safeMin) {\n      // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      safeMax = Character.MIN_VALUE;\n      safeMin = Character.MAX_VALUE;\n    }\n    this.safeMin = safeMin;\n    this.safeMax = safeMax;\n  }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String escape(String s) {\n{int lI0O_76e01cea=0x1BD7;boolean lI0O_b9c2d867=true;do{lI0O_76e01cea^=0x1BD7;lI0O_b9c2d867=false;}while(lI0O_b9c2d867);}\n\n    checkNotNull(s); // GWT specific check (do not optimize).\n    for (int i = 0; i < s.length(); i++) {\n      char c = s.charAt(i);\n      if ((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin) {\n        return escapeSlow(s, i);\n      }\n    }\n    return s;\n  }\n\n  /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] escape(char c) {\n    if (c < replacementsLength) {\n      char[] chars = replacements[c];\n      if (chars != null) {\n        return chars;\n      }\n    }\n    if (c >= safeMin && c <= safeMax) {\n      return null;\n    }\n    return escapeUnsafe(c);\n  }\n\n  /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] escapeUnsafe(char c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaa8c720dd2242831a3b402d61ecf17820f2ab7910473d97ed8c7bf267d9611", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 136, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__ArrayBasedCharEscaper__4d01f888.java", "order": 9, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 7}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-7d814d01f888-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 374, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d008501f10aa-I10", "source": "package com.google.common.escape; import static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map; import org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible public abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements; // The number of elements in the replacement array.\n  private final int replacementsLength; // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper( Map<Character, String> replacementMap, char safeMin, char safeMax) {\n\n    this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax); }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaperMap, char safeMin, char safeMax) {\n\n    checkNotNull(escaperMap); // GWT specific check (do not optimize)\n    this.replacements = escaperMap.getReplacementArray();\n    this.replacementsLength = replacements.length; if (safeMax < safeMin) { // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      safeMax = Character.MIN_VALUE;\n      safeMin = Character.MAX_VALUE;\n    } this.safeMin = safeMin; this.safeMax = safeMax; }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String escape(String s) { checkNotNull(s); // GWT specific check (do not optimize).\n    for (int i = 0; i < s.length(); i++) {\n      char c = s.charAt(i);\n      if ((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin) {\n        return escapeSlow(s, i);\n      }\n    }\n    return s; } /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] escape(char c) { if (c < replacementsLength) {\n      char[] chars = replacements[c];\n      if (chars != null) {\n        return chars;\n      } }\n    if (c >= safeMin && c <= safeMax) { return null; }\n    return escapeUnsafe(c); } /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] escapeUnsafe(char c); }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "8932f3c13e20fc54e6d8ec16141a306fd28db6f6ea5006bf75bb8f1f25be1baa", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "partially-compact-layout", "level": 10, "line_count": 110, "local_path": "layout/partially-compact-layout/I10__google-guava__ArrayBasedCharEscaper__501f10aa.java", "order": 10, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 55, "line_break_groups_removed": 22, "line_breaks_removed": 24, "whitespace_characters_removed": 64}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-d008501f10aa-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 375, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8ab022c591e3-I11", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements;\n  // The number of elements in the replacement array.\n  private final int replacementsLength;\n  // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> replacementMap, char safeMin, char safeMax) {\n\n    this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax);\n  }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaperMap, char safeMin, char safeMax) {\n\n    checkNotNull(escaperMap); // GWT specific check (do not optimize)\n    this.replacements = escaperMap.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (safeMax < safeMin) {\n      // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      safeMax = Character.MIN_VALUE;\n      safeMin = Character.MAX_VALUE;\n    }\n    this.safeMin = safeMin;\n    this.safeMax = safeMax;\n  }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String escape(String s) {\n    checkNotNull(s); // GWT specific check (do not optimize).\n    final int a = 1;\n    final int b = -1;\n    for (int i = (a + b); i < s.length(); i++) {\n      char c = s.charAt(i);\n      if ((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin) {\n        return escapeSlow(s, i);\n      }\n    }\n    return s;\n  }\n\n  /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] escape(char c) {\n    if (c < replacementsLength) {\n      char[] chars = replacements[c];\n      if (chars != null) {\n        return chars;\n      }\n    }\n    if (c >= safeMin && c <= safeMax) {\n      return null;\n    }\n    return escapeUnsafe(c);\n  }\n\n  /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] escapeUnsafe(char c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "7feade0840c4b222cf7ae97d1216800c9a07783e275a446f8722a9f3b1f3dae1", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 136, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__ArrayBasedCharEscaper__22c591e3.java", "order": 11, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 1, "intermediate_variables_introduced": 2, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-8ab022c591e3-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 376, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2b0c9b0b84cb-I12", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements;\n  // The number of elements in the replacement array.\n  private final int replacementsLength;\n  // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> replacementMap, char safeMin, char safeMax) {\n\n    this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax);\n  }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaperMap, char safeMin, char safeMax) {\n\n    checkNotNull(escaperMap); // GWT specific check (do not optimize)\n    this.replacements = escaperMap.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (safeMax < safeMin) {\n      // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      safeMax = Character.MIN_VALUE;\n      safeMin = Character.MAX_VALUE;\n    }\n    this.safeMin = safeMin;\n    this.safeMax = safeMax;\n  }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String escape(String s) {\n    checkNotNull(s); // GWT specific check (do not optimize).\n    for (int i = 0; i < s.length(); i++) {\n      char c = s.charAt(i);\n      if ((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin) {\n        return escapeSlow(s, i);\n      }\n    }\n    return s;\n  }\n\n  /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] escape(char c) {\n    if (c < replacementsLength) {\n      char[] chars = replacements[c];\n      if (chars != null) {\n        return chars;\n      }\n    }\n    if (c >= safeMin && c <= safeMax) {\n      return null;\n    }\n    return escapeUnsafe(c);\n  }\n\n  /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] escapeUnsafe(char c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 134, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__ArrayBasedCharEscaper__9b0b84cb.java", "order": 12, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-2b0c9b0b84cb-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 377, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b568ad36b676-I13", "source": "package com.google.common.escape;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.annotations.GwtCompatible;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A {@link CharEscaper} that uses an array to quickly look up replacement characters for a given\n * {@code char} value. An additional safe range is provided that determines whether {@code char}\n * values without specific replacements are to be considered safe and left unescaped or should be\n * escaped in a general way.\n *\n * <p>A good example of usage of this class is for Java source code escaping where the replacement\n * array contains information about special ASCII characters such as {@code \\\\t} and {@code \\\\n}\n * while {@link #escapeUnsafe} is overridden to handle general escaping of the form {@code \\\\uxxxx}.\n *\n * <p>The size of the data structure used by {@link ArrayBasedCharEscaper} is proportional to the\n * highest valued character that requires escaping. For example a replacement map containing the\n * single character '{@code \\}{@code u1000}' will require approximately 16K of memory. If you need\n * to create multiple escaper instances that have the same character replacement mapping consider\n * using {@link ArrayBasedEscaperMap}.\n *\n * @author Sven Mawson\n * @author David Beaumont\n * @since 15.0\n */\n@GwtCompatible\npublic abstract class ArrayBasedCharEscaper extends CharEscaper {\n  // The replacement array (see ArrayBasedEscaperMap).\n  private final char[][] replacements;\n  // The number of elements in the replacement array.\n  private final int replacementsLength;\n  // The first character in the safe range.\n  private final char safeMin;\n  // The last character in the safe range.\n  private final char safeMax;\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param replacementMap a map of characters to their escaped representations\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(\n      Map<Character, String> replacementMap, char safeMin, char safeMax) {\n\n    this(ArrayBasedEscaperMap.create(replacementMap), safeMin, safeMax);\n  }\n\n  /**\n   * Creates a new ArrayBasedCharEscaper instance with the given replacement map and specified safe\n   * range. If {@code safeMax < safeMin} then no characters are considered safe. This initializer is\n   * useful when explicit instances of ArrayBasedEscaperMap are used to allow the sharing of large\n   * replacement mappings.\n   *\n   * <p>If a character has no mapped replacement then it is checked against the safe range. If it\n   * lies outside that, then {@link #escapeUnsafe} is called, otherwise no escaping is performed.\n   *\n   * @param escaperMap the mapping of characters to be escaped\n   * @param safeMin the lowest character value in the safe range\n   * @param safeMax the highest character value in the safe range\n   */\n  protected ArrayBasedCharEscaper(ArrayBasedEscaperMap escaperMap, char safeMin, char safeMax) {\n\n    checkNotNull(escaperMap); // GWT specific check (do not optimize)\n    this.replacements = escaperMap.getReplacementArray();\n    this.replacementsLength = replacements.length;\n    if (safeMax < safeMin) {\n      // If the safe range is empty, set the range limits to opposite extremes\n      // to ensure the first test of either value will (almost certainly) fail.\n      safeMax = Character.MIN_VALUE;\n      safeMin = Character.MAX_VALUE;\n    }\n    this.safeMin = safeMin;\n    this.safeMax = safeMax;\n  }\n\n  /*\n   * This is overridden to improve performance. Rough benchmarking shows that this almost doubles\n   * the speed when processing strings that do not require any escaping.\n   */\n  @Override\n  public final String escape(String s) {\n    checkNotNull(s); // GWT specific check (do not optimize).\n    {\n      int i = 0;\n      while (i < s.length()) {\n        char c = s.charAt(i);\n        if ((c < replacementsLength && replacements[c] != null) || c > safeMax || c < safeMin) {\n          return escapeSlow(s, i);\n        }\n        i++;\n      }\n    }\n    return s;\n  }\n\n  /**\n   * Escapes a single character using the replacement array and safe range values. If the given\n   * character does not have an explicit replacement and lies outside the safe range then {@link\n   * #escapeUnsafe} is called.\n   *\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  @Override\n  protected final char @Nullable [] escape(char c) {\n    if (c < replacementsLength) {\n      char[] chars = replacements[c];\n      if (chars != null) {\n        return chars;\n      }\n    }\n    if (c >= safeMin && c <= safeMax) {\n      return null;\n    }\n    return escapeUnsafe(c);\n  }\n\n  /**\n   * Escapes a {@code char} value that has no direct explicit value in the replacement array and\n   * lies outside the stated safe range. Subclasses should override this method to provide\n   * generalized escaping for characters.\n   *\n   * <p>Note that arrays returned by this method must not be modified once they have been returned.\n   * However it is acceptable to return the same array multiple times (even for different input\n   * characters).\n   *\n   * @param c the character to escape\n   * @return the replacement characters, or {@code null} if no escaping was required\n   */\n  // TODO(dbeaumont,cpovirk): Rename this something better once refactoring done\n  protected abstract char @Nullable [] escapeUnsafe(char c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__ArrayBasedCharEscaper__8f2c076b.java", "base_sample_id": "source-c8cedfedb294b529", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "80dce2c1e49aa6ccde57995957db3a9c80f63b923515efca722b0ab2906cae29", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/escape/ArrayBasedCharEscaper.java", "interference": "lower-for-to-while", "level": 13, "line_count": 138, "local_path": "control-flow/lower-for-to-while/I13__google-guava__ArrayBasedCharEscaper__ad36b676.java", "order": 13, "original_content_sha256": "d21c3c9bb9925bec4ccdbdf9f5b490852ebc855b8319d3aded4940fc9951cee2", "parent_variant_id": "int-f2638f2c076b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/escape/ArrayBasedCharEscaper.java#L23-L150", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 1, "classic_for_loops_found": 1, "classic_for_loops_lowered_to_while": 1, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ArrayBasedCharEscaper", "variant_id": "int-b568ad36b676-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 378, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a2e2d577e310-SRC", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": null, "level": 0, "line_count": 25, "local_path": "source-original/SRC__google-guava__Subscribe__d577e310.java", "order": 0, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "original", "transformation_stats": {}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-a2e2d577e310-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 659, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9c2eb319b29d-I01", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "5907c46c9c9c6fed49988cbefe8c97960fe0175c5d07b53c2b6d1670acb6cb52", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "remove-comments", "level": 1, "line_count": 25, "local_path": "comments/remove-comments/I01__google-guava__Subscribe__b319b29d.java", "order": 1, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 572, "comments_removed": 1}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-9c2eb319b29d-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 660, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-30c20e07cb5b-I02", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "shorten-identifiers", "level": 2, "line_count": 25, "local_path": "identifiers/shorten-identifiers/I02__google-guava__Subscribe__0e07cb5b.java", "order": 2, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 0, "method_name_collisions_avoided": 0, "method_name_groups": 0}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-30c20e07cb5b-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 661, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-699c4192b7dd-I03", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "mislead-identifiers", "level": 3, "line_count": 25, "local_path": "identifiers/mislead-identifiers/I03__google-guava__Subscribe__4192b7dd.java", "order": 3, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 0, "local_random_pool_selections": 0, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 0, "method_exact_length_matches": 0, "method_name_groups": 0, "method_random_pool_selections": 0, "method_total_length_difference": 0}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-699c4192b7dd-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 662, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a16d92952ad2-I04", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "garble-identifiers", "level": 4, "line_count": 25, "local_path": "identifiers/garble-identifiers/I04__google-guava__Subscribe__92952ad2.java", "order": 4, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 0, "method_name_collisions_avoided": 0, "method_name_groups": 0}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-a16d92952ad2-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 663, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0a1d014413c9-I05", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "encode-integer-literals", "level": 5, "line_count": 25, "local_path": "expressions/encode-integer-literals/I05__google-guava__Subscribe__014413c9.java", "order": 5, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-0a1d014413c9-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 664, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cb532bcfd16c-I06", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "invert-conditions", "level": 6, "line_count": 25, "local_path": "expressions/invert-conditions/I06__google-guava__Subscribe__2bcfd16c.java", "order": 6, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-cb532bcfd16c-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 665, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c65b6ea777d0-I07", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "insert-dead-branches", "level": 7, "line_count": 25, "local_path": "code-injection/insert-dead-branches/I07__google-guava__Subscribe__6ea777d0.java", "order": 7, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-c65b6ea777d0-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 666, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7c34d8acb6f3-I08", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 25, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__Subscribe__d8acb6f3.java", "order": 8, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-7c34d8acb6f3-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 667, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a384e60577af-I09", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 25, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__Subscribe__e60577af.java", "order": 9, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-a384e60577af-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 668, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-32935969a7ef-I10", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType; import java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD) @Keep public @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "989a6f566e1a0de15fe65477fbb65671d8e32311d28374112982558034ad0a4c", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "partially-compact-layout", "level": 10, "line_count": 21, "local_path": "layout/partially-compact-layout/I10__google-guava__Subscribe__5969a7ef.java", "order": 10, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 10, "line_break_groups_removed": 4, "line_breaks_removed": 4, "whitespace_characters_removed": 0}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-32935969a7ef-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 669, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-11f8ff4d4e1c-I11", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 25, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__Subscribe__ff4d4e1c.java", "order": 11, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-11f8ff4d4e1c-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 670, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d2bd1d351764-I12", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 25, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__Subscribe__1d351764.java", "order": 12, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-d2bd1d351764-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 671, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1ae81dce6021-I13", "source": "package com.google.common.eventbus;\nimport com.google.errorprone.annotations.Keep;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Marks a method as an event subscriber.\n *\n * <p>The type of event will be indicated by the method's first (and only) parameter, which cannot\n * be primitive. If this annotation is applied to methods with zero parameters, or more than one\n * parameter, the object containing the method will not be able to register for event delivery from\n * the {@link EventBus}.\n *\n * <p>Unless also annotated with @{@link AllowConcurrentEvents}, event subscriber methods will be\n * invoked serially by each event bus that they are registered with.\n *\n * @author Cliff Biffle\n * @since 10.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target(ElementType.METHOD)\n@Keep\npublic @interface Subscribe {}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__Subscribe__d577e310.java", "base_sample_id": "source-7fa2873f7e473022", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/eventbus/Subscribe.java", "interference": "lower-for-to-while", "level": 13, "line_count": 25, "local_path": "control-flow/lower-for-to-while/I13__google-guava__Subscribe__1dce6021.java", "order": 13, "original_content_sha256": "ccaab1e6a6477900dec167cd37556da3d8433c6e1381213433cee6f01a936593", "parent_variant_id": "int-a2e2d577e310-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/eventbus/Subscribe.java#L23-L40", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "annotation_type", "unit_name": "Subscribe", "variant_id": "int-1ae81dce6021-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 672, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8ea80a272f90-SRC", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> nodeToEdgeMap, Object targetNode) {\n    this.nodeToOutEdge = checkNotNull(nodeToEdgeMap);\n    this.targetNode = checkNotNull(targetNode);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> iterator() {\n    E connectingEdge = getConnectingEdge();\n    return (connectingEdge == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(connectingEdge);\n  }\n\n  @Override\n  public int size() {\n    return getConnectingEdge() == null ? 0 : 1;\n  }\n\n  @Override\n  public boolean contains(@Nullable Object edge) {\n    E connectingEdge = getConnectingEdge();\n    return connectingEdge != null && connectingEdge.equals(edge);\n  }\n\n  private @Nullable E getConnectingEdge() {\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": null, "level": 0, "line_count": 51, "local_path": "source-original/SRC__google-guava__EdgesConnecting__0a272f90.java", "order": 0, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-8ea80a272f90-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 449, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4053a47a1f41-I01", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n\n\n\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> nodeToEdgeMap, Object targetNode) {\n    this.nodeToOutEdge = checkNotNull(nodeToEdgeMap);\n    this.targetNode = checkNotNull(targetNode);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> iterator() {\n    E connectingEdge = getConnectingEdge();\n    return (connectingEdge == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(connectingEdge);\n  }\n\n  @Override\n  public int size() {\n    return getConnectingEdge() == null ? 0 : 1;\n  }\n\n  @Override\n  public boolean contains(@Nullable Object edge) {\n    E connectingEdge = getConnectingEdge();\n    return connectingEdge != null && connectingEdge.equals(edge);\n  }\n\n  private @Nullable E getConnectingEdge() {\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "34a107265ec3d048a24a4fd1361d523519fb7adc280627afe8dc32a8dc23d42f", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "remove-comments", "level": 1, "line_count": 51, "local_path": "comments/remove-comments/I01__google-guava__EdgesConnecting__a47a1f41.java", "order": 1, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 340, "comments_removed": 1}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-4053a47a1f41-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 450, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-00cc18883ae7-I02", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> node, Object target) {\n    this.nodeToOutEdge = checkNotNull(node);\n    this.targetNode = checkNotNull(target);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> ite() {\n    E connecting = get();\n    return (connecting == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(connecting);\n  }\n\n  @Override\n  public int siz() {\n    return get() == null ? 0 : 1;\n  }\n\n  @Override\n  public boolean con(@Nullable Object edg) {\n    E connecting2 = get();\n    return connecting2 != null && connecting2.equals(edg);\n  }\n\n  private @Nullable E get() {\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "90a2b51d7c0d14f6aaebd296c4924c3142f9fd5a13e11934a44faedde8e65218", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "shorten-identifiers", "level": 2, "line_count": 51, "local_path": "identifiers/shorten-identifiers/I02__google-guava__EdgesConnecting__18883ae7.java", "order": 2, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 5, "local_name_collisions_avoided": 1, "method_calls_renamed": 3, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-00cc18883ae7-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 451, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cadd6baec41f-I03", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> recentMessage, Object cachedMode) {\n    this.nodeToOutEdge = checkNotNull(recentMessage);\n    this.targetNode = checkNotNull(cachedMode);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> findUser() {\n    E pendingAddress = validateBalance();\n    return (pendingAddress == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(pendingAddress);\n  }\n\n  @Override\n  public int join() {\n    return validateBalance() == null ? 0 : 1;\n  }\n\n  @Override\n  public boolean loadPath(@Nullable Object item) {\n    E defaultMessage = validateBalance();\n    return defaultMessage != null && defaultMessage.equals(item);\n  }\n\n  private @Nullable E validateBalance() {\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7a0e51ec48f9ed542bd873071ba76f0b4ca1206aadb50687e4071456c7857a20", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "mislead-identifiers", "level": 3, "line_count": 51, "local_path": "identifiers/mislead-identifiers/I03__google-guava__EdgesConnecting__6baec41f.java", "order": 3, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 1, "local_exact_length_matches": 5, "local_random_pool_selections": 5, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 3, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 3, "method_name_groups": 4, "method_random_pool_selections": 4, "method_total_length_difference": 2}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-cadd6baec41f-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 452, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bcd147f0ca24-I04", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> a, Object b) {\n    this.nodeToOutEdge = checkNotNull(a);\n    this.targetNode = checkNotNull(b);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> a() {\n    E c = d();\n    return (c == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(c);\n  }\n\n  @Override\n  public int b() {\n    return d() == null ? 0 : 1;\n  }\n\n  @Override\n  public boolean c(@Nullable Object d) {\n    E e = d();\n    return e != null && e.equals(d);\n  }\n\n  private @Nullable E d() {\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b389831972a0cb7883a6ba67f643cae3d41f81399934931f6bd70ca060060f1c", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "garble-identifiers", "level": 4, "line_count": 51, "local_path": "identifiers/garble-identifiers/I04__google-guava__EdgesConnecting__47f0ca24.java", "order": 4, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 3, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-bcd147f0ca24-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 453, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ef8341ddc189-I05", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> nodeToEdgeMap, Object targetNode) {\n    this.nodeToOutEdge = checkNotNull(nodeToEdgeMap);\n    this.targetNode = checkNotNull(targetNode);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> iterator() {\n    E connectingEdge = getConnectingEdge();\n    return (connectingEdge == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(connectingEdge);\n  }\n\n  @Override\n  public int size() {\n    return getConnectingEdge() == null ? 0x0 : 0x1;\n  }\n\n  @Override\n  public boolean contains(@Nullable Object edge) {\n    E connectingEdge = getConnectingEdge();\n    return connectingEdge != null && connectingEdge.equals(edge);\n  }\n\n  private @Nullable E getConnectingEdge() {\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "09b3ce9b889edd26b557cb6306c99ca09f2a98f81fd6e6533d16484e32b13f6f", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "encode-integer-literals", "level": 5, "line_count": 51, "local_path": "expressions/encode-integer-literals/I05__google-guava__EdgesConnecting__41ddc189.java", "order": 5, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 2}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-ef8341ddc189-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 454, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-123fb14da323-I06", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> nodeToEdgeMap, Object targetNode) {\n    this.nodeToOutEdge = checkNotNull(nodeToEdgeMap);\n    this.targetNode = checkNotNull(targetNode);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> iterator() {\n    E connectingEdge = getConnectingEdge();\n    return (connectingEdge == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(connectingEdge);\n  }\n\n  @Override\n  public int size() {\n    return getConnectingEdge() == null ? 0 : 1;\n  }\n\n  @Override\n  public boolean contains(@Nullable Object edge) {\n    E connectingEdge = getConnectingEdge();\n    return connectingEdge != null && connectingEdge.equals(edge);\n  }\n\n  private @Nullable E getConnectingEdge() {\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "invert-conditions", "level": 6, "line_count": 51, "local_path": "expressions/invert-conditions/I06__google-guava__EdgesConnecting__b14da323.java", "order": 6, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-123fb14da323-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 455, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cf8f6d2da796-I07", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> nodeToEdgeMap, Object targetNode) {\nif (((0x19DA ^ 0x19DA) != 0)) { throw new AssertionError(); }\n\n    this.nodeToOutEdge = checkNotNull(nodeToEdgeMap);\n    this.targetNode = checkNotNull(targetNode);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> iterator() {\nif (((0x849D ^ 0x849D) != 0)) { throw new AssertionError(); }\n\n    E connectingEdge = getConnectingEdge();\n    return (connectingEdge == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(connectingEdge);\n  }\n\n  @Override\n  public int size() {\nif (((0x902B ^ 0x902B) != 0)) { throw new AssertionError(); }\n\n    return getConnectingEdge() == null ? 0 : 1;\n  }\n\n  @Override\n  public boolean contains(@Nullable Object edge) {\nif (((0xD379 ^ 0xD379) != 0)) { throw new AssertionError(); }\n\n    E connectingEdge = getConnectingEdge();\n    return connectingEdge != null && connectingEdge.equals(edge);\n  }\n\n  private @Nullable E getConnectingEdge() {\nif (((0x3965 ^ 0x3965) != 0)) { throw new AssertionError(); }\n\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "e700c49372be9ece6343343a832a31a6b0509696b1412ce523b1b62b17d8d86e", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "insert-dead-branches", "level": 7, "line_count": 61, "local_path": "code-injection/insert-dead-branches/I07__google-guava__EdgesConnecting__6d2da796.java", "order": 7, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 5}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-cf8f6d2da796-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 456, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b28cee788599-I08", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> nodeToEdgeMap, Object targetNode) {\n    this.nodeToOutEdge = checkNotNull(nodeToEdgeMap);\n    this.targetNode = checkNotNull(targetNode);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> iterator() {\n    E connectingEdge = getConnectingEdge();\n    return (connectingEdge == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(connectingEdge);\n  }\n\n  @Override\n  public int size() {\n    return getConnectingEdge() == null ? 0 : 1;\n  }\n\n  @Override\n  public boolean contains(@Nullable Object edge) {\n    E connectingEdge = getConnectingEdge();\n    return connectingEdge != null && connectingEdge.equals(edge);\n  }\n\n  private @Nullable E getConnectingEdge() {\n{\n  int startingPosition = 2;\n  int endingPosition = 9;\n  int travelDistance = endingPosition - startingPosition;\n  if (travelDistance < 0) {\n    travelDistance = -travelDistance;\n  }\n}\n\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "fb3d671ce5f89c3d556e7752fb9fdc556fd086b6e7620b04e738b3b18e8d783c", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 60, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__EdgesConnecting__ee788599.java", "order": 8, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 9}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-b28cee788599-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 457, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8a0b86eb8d1a-I09", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> nodeToEdgeMap, Object targetNode) {\n    this.nodeToOutEdge = checkNotNull(nodeToEdgeMap);\n    this.targetNode = checkNotNull(targetNode);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> iterator() {\n    E connectingEdge = getConnectingEdge();\n    return (connectingEdge == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(connectingEdge);\n  }\n\n  @Override\n  public int size() {\n    return getConnectingEdge() == null ? 0 : 1;\n  }\n\n  @Override\n  public boolean contains(@Nullable Object edge) {\n    E connectingEdge = getConnectingEdge();\n    return connectingEdge != null && connectingEdge.equals(edge);\n  }\n\n  private @Nullable E getConnectingEdge() {\n{boolean lI0O_1cb0eaa0=((0xBA53^0xBA53)!=0);lI0O_1cb0eaa0=!(!lI0O_1cb0eaa0);}\n\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "9371835ea2c289908eae5d3c79406d9c18b15b119f22e1d7ee8bd709948e4cc0", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 53, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__EdgesConnecting__86eb8d1a.java", "order": 9, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-8a0b86eb8d1a-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 458, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5f60be08a81f-I10", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull; import com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators; import com.google.common.collect.UnmodifiableIterator; import java.util.AbstractSet; import java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */ final class EdgesConnecting<E> extends AbstractSet<E> { private final Map<?, E> nodeToOutEdge; private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> nodeToEdgeMap, Object targetNode) {\n    this.nodeToOutEdge = checkNotNull(nodeToEdgeMap); this.targetNode = checkNotNull(targetNode);\n  } @Override\n  public UnmodifiableIterator<E> iterator() {\n    E connectingEdge = getConnectingEdge();\n    return (connectingEdge == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(connectingEdge); }\n\n  @Override\n  public int size() { return getConnectingEdge() == null ? 0 : 1;\n  }\n\n  @Override\n  public boolean contains(@Nullable Object edge) { E connectingEdge = getConnectingEdge(); return connectingEdge != null && connectingEdge.equals(edge);\n  }\n\n  private @Nullable E getConnectingEdge() { return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "afec2e8637affa8e5900118e9c6e83a689d4f8abfee7c55cc7cbacdaf2c3a4da", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "partially-compact-layout", "level": 10, "line_count": 35, "local_path": "layout/partially-compact-layout/I10__google-guava__EdgesConnecting__be08a81f.java", "order": 10, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 35, "line_break_groups_removed": 14, "line_breaks_removed": 16, "whitespace_characters_removed": 30}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-5f60be08a81f-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 459, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b5085aa794c2-I11", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> nodeToEdgeMap, Object targetNode) {\n    this.nodeToOutEdge = checkNotNull(nodeToEdgeMap);\n    this.targetNode = checkNotNull(targetNode);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> iterator() {\n    E connectingEdge = getConnectingEdge();\n    return (connectingEdge == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(connectingEdge);\n  }\n\n  @Override\n  public int size() {\n    final int a = 1;\n    final int b = -1;\n    final int c = 2;\n    final int d = -1;\n    return getConnectingEdge() == null ? (a + b) : (c + d);\n  }\n\n  @Override\n  public boolean contains(@Nullable Object edge) {\n    E connectingEdge = getConnectingEdge();\n    return connectingEdge != null && connectingEdge.equals(edge);\n  }\n\n  private @Nullable E getConnectingEdge() {\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5318953488aa1d1b199e4701c15947146e0869d3321e2baa06dd1f3e9be773f5", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 55, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__EdgesConnecting__5aa794c2.java", "order": 11, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 2, "intermediate_variables_introduced": 4, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-b5085aa794c2-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 460, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5e08841acf75-I12", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> nodeToEdgeMap, Object targetNode) {\n    this.nodeToOutEdge = checkNotNull(nodeToEdgeMap);\n    this.targetNode = checkNotNull(targetNode);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> iterator() {\n    E connectingEdge = getConnectingEdge();\n    return (connectingEdge == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(connectingEdge);\n  }\n\n  @Override\n  public int size() {\n    return getConnectingEdge() == null ? 0 : 1;\n  }\n\n  @Override\n  public boolean contains(@Nullable Object edge) {\n    E connectingEdge = getConnectingEdge();\n    return connectingEdge != null && connectingEdge.equals(edge);\n  }\n\n  private @Nullable E getConnectingEdge() {\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 51, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__EdgesConnecting__841acf75.java", "order": 12, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-5e08841acf75-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 461, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eadb85c48b69-I13", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Iterators;\nimport com.google.common.collect.UnmodifiableIterator;\nimport java.util.AbstractSet;\nimport java.util.Map;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to represent the set of edges connecting an (implicit) origin node to a target node.\n *\n * <p>The {@link #nodeToOutEdge} map means this class only works on networks without parallel edges.\n * See {@link MultiEdgesConnecting} for a class that works with parallel edges.\n *\n * @author James Sexton\n * @param <E> Edge parameter type\n */\nfinal class EdgesConnecting<E> extends AbstractSet<E> {\n\n  private final Map<?, E> nodeToOutEdge;\n  private final Object targetNode;\n\n  EdgesConnecting(Map<?, E> nodeToEdgeMap, Object targetNode) {\n    this.nodeToOutEdge = checkNotNull(nodeToEdgeMap);\n    this.targetNode = checkNotNull(targetNode);\n  }\n\n  @Override\n  public UnmodifiableIterator<E> iterator() {\n    E connectingEdge = getConnectingEdge();\n    return (connectingEdge == null)\n        ? ImmutableSet.<E>of().iterator()\n        : Iterators.singletonIterator(connectingEdge);\n  }\n\n  @Override\n  public int size() {\n    return getConnectingEdge() == null ? 0 : 1;\n  }\n\n  @Override\n  public boolean contains(@Nullable Object edge) {\n    E connectingEdge = getConnectingEdge();\n    return connectingEdge != null && connectingEdge.equals(edge);\n  }\n\n  private @Nullable E getConnectingEdge() {\n    return nodeToOutEdge.get(targetNode);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__EdgesConnecting__0a272f90.java", "base_sample_id": "source-2016a85e32b79e5e", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EdgesConnecting.java", "interference": "lower-for-to-while", "level": 13, "line_count": 51, "local_path": "control-flow/lower-for-to-while/I13__google-guava__EdgesConnecting__85c48b69.java", "order": 13, "original_content_sha256": "f213187090f982b8b08ebbe33c8b3f640fd1cc46b190b0386cb66485b0232b0f", "parent_variant_id": "int-8ea80a272f90-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EdgesConnecting.java#L28-L69", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "EdgesConnecting", "variant_id": "int-eadb85c48b69-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 462, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ad514ea4a10d-SRC", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> of(BaseGraph<N> graph) {\n    return graph.isDirected() ? new Directed<N>(graph) : new Undirected<N>(graph);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> graph) {\n    this.graph = graph;\n    this.nodeIterator = graph.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean advance() {\n    checkState(!successorIterator.hasNext());\n    if (!nodeIterator.hasNext()) {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> graph) {\n      super(graph);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        if (successorIterator.hasNext()) {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!advance()) {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> graph) {\n      super(graph);\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(graph.nodes().size() + 1);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N otherNode = successorIterator.next();\n          if (!visitedNodes.contains(otherNode)) {\n            // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), otherNode);\n          }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node);\n        if (!advance()) {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": null, "level": 0, "line_count": 129, "local_path": "source-original/SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "order": 0, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-ad514ea4a10d-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 463, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8fb9380e2fc4-I01", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null;  \n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> of(BaseGraph<N> graph) {\n    return graph.isDirected() ? new Directed<N>(graph) : new Undirected<N>(graph);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> graph) {\n    this.graph = graph;\n    this.nodeIterator = graph.nodes().iterator();\n  }\n\n  \n\n\n\n  final boolean advance() {\n    checkState(!successorIterator.hasNext());\n    if (!nodeIterator.hasNext()) {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  \n\n\n\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> graph) {\n      super(graph);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        if (successorIterator.hasNext()) {\n           \n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!advance()) {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n     \n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> graph) {\n      super(graph);\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(graph.nodes().size() + 1);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        \n\n\n\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N otherNode = successorIterator.next();\n          if (!visitedNodes.contains(otherNode)) {\n             \n            return EndpointPair.unordered(requireNonNull(node), otherNode);\n          }\n        }\n         \n        visitedNodes.add(node);\n        if (!advance()) {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "119fcf8c2729e513ed87ca876971dfd43eb6913337001258d60bfb19b4f35e30", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "remove-comments", "level": 1, "line_count": 129, "local_path": "comments/remove-comments/I01__google-guava__EndpointPairIterator__380e2fc4.java", "order": 1, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1901, "comments_removed": 10}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-8fb9380e2fc4-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 464, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0dedd576ece6-I02", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> of(BaseGraph<N> gra) {\n    return gra.isDirected() ? new Directed<N>(gra) : new Undirected<N>(gra);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> gra2) {\n    this.graph = gra2;\n    this.nodeIterator = gra2.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean adv() {\n    checkState(!successorIterator.hasNext());\n    if (!nodeIterator.hasNext()) {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> gra3) {\n      super(gra3);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> compute() {\n      while (true) {\n        if (successorIterator.hasNext()) {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!advance()) {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> gra4) {\n      super(gra4);\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(gra4.nodes().size() + 1);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> compute() {\n      while (true) {\n        /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N other = successorIterator.next();\n          if (!visitedNodes.contains(other)) {\n            // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), other);\n          }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node);\n        if (!advance()) {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "32602685d44bf6bd620f9939110b85e31a059aea6a605ee29f844c073c41d9d6", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "shorten-identifiers", "level": 2, "line_count": 129, "local_path": "identifiers/shorten-identifiers/I02__google-guava__EndpointPairIterator__d576ece6.java", "order": 2, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 10, "identifiers_declared": 5, "local_name_collisions_avoided": 3, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-0dedd576ece6-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 465, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5aa046bea5c5-I03", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> add(BaseGraph<N> index) {\n    return index.isDirected() ? new Directed<N>(index) : new Undirected<N>(index);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> cache) {\n    this.graph = cache;\n    this.nodeIterator = cache.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean resolve() {\n    checkState(!successorIterator.hasNext());\n    if (!nodeIterator.hasNext()) {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> score) {\n      super(score);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> removeScore() {\n      while (true) {\n        if (successorIterator.hasNext()) {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!advance()) {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> value) {\n      super(value);\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(value.nodes().size() + 1);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> readMessage() {\n      while (true) {\n        /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N finalNode = successorIterator.next();\n          if (!visitedNodes.contains(finalNode)) {\n            // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), finalNode);\n          }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node);\n        if (!advance()) {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "de916462618bada594f498118833a6f03d60c6b6508b07234ce980fbdb2c4bec", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "mislead-identifiers", "level": 3, "line_count": 129, "local_path": "identifiers/mislead-identifiers/I03__google-guava__EndpointPairIterator__46bea5c5.java", "order": 3, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 10, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 5, "local_random_pool_selections": 5, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 3, "method_name_groups": 4, "method_random_pool_selections": 4, "method_total_length_difference": 1}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-5aa046bea5c5-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 466, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-440da57d0073-I04", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> a(BaseGraph<N> a) {\n    return a.isDirected() ? new Directed<N>(a) : new Undirected<N>(a);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> b) {\n    this.graph = b;\n    this.nodeIterator = b.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean b() {\n    checkState(!successorIterator.hasNext());\n    if (!nodeIterator.hasNext()) {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> c) {\n      super(c);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> a() {\n      while (true) {\n        if (successorIterator.hasNext()) {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!advance()) {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> d) {\n      super(d);\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(d.nodes().size() + 1);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> a() {\n      while (true) {\n        /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N e = successorIterator.next();\n          if (!visitedNodes.contains(e)) {\n            // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), e);\n          }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node);\n        if (!advance()) {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e84eac4dac023ba8b67e964a80b14929f3651661752b5a75eb1af6d03a164287", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "garble-identifiers", "level": 4, "line_count": 129, "local_path": "identifiers/garble-identifiers/I04__google-guava__EndpointPairIterator__a57d0073.java", "order": 4, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 10, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-440da57d0073-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 467, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e90299383379-I05", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> of(BaseGraph<N> graph) {\n    return graph.isDirected() ? new Directed<N>(graph) : new Undirected<N>(graph);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> graph) {\n    this.graph = graph;\n    this.nodeIterator = graph.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean advance() {\n    checkState(!successorIterator.hasNext());\n    if (!nodeIterator.hasNext()) {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> graph) {\n      super(graph);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        if (successorIterator.hasNext()) {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!advance()) {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> graph) {\n      super(graph);\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(graph.nodes().size() + 0x1);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N otherNode = successorIterator.next();\n          if (!visitedNodes.contains(otherNode)) {\n            // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), otherNode);\n          }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node);\n        if (!advance()) {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "66256c862de96070de9c17f5a357a94392ce6c0ae4ad74e962f01536ecc5b4e7", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "encode-integer-literals", "level": 5, "line_count": 129, "local_path": "expressions/encode-integer-literals/I05__google-guava__EndpointPairIterator__99383379.java", "order": 5, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-e90299383379-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 468, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cf71539c3639-I06", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> of(BaseGraph<N> graph) {\n    return graph.isDirected() ? new Directed<N>(graph) : new Undirected<N>(graph);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> graph) {\n    this.graph = graph;\n    this.nodeIterator = graph.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean advance() {\n    checkState(!successorIterator.hasNext());\n    if (!((!nodeIterator.hasNext()))) {} else {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> graph) {\n      super(graph);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        if (!((successorIterator.hasNext()))) {} else {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!((!advance()))) {} else {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> graph) {\n      super(graph);\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(graph.nodes().size() + 1);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N otherNode = successorIterator.next();\n          if (!((!visitedNodes.contains(otherNode)))) {} else {\n            // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), otherNode);\n          }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node);\n        if (!((!advance()))) {} else {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "e4d0e8479935955a50e9e392852172f93bb3b89e0571165c7ac2e9b5ca925e19", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "invert-conditions", "level": 6, "line_count": 129, "local_path": "expressions/invert-conditions/I06__google-guava__EndpointPairIterator__539c3639.java", "order": 6, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 5}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-cf71539c3639-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 469, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9e2a2efa09b3-I07", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> of(BaseGraph<N> graph) {\nif (((0x10AC ^ 0x10AC) != 0)) { throw new AssertionError(); }\n\n    return graph.isDirected() ? new Directed<N>(graph) : new Undirected<N>(graph);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> graph) {\nif (((0x830F ^ 0x830F) != 0)) { throw new AssertionError(); }\n\n    this.graph = graph;\n    this.nodeIterator = graph.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean advance() {\nif (((0x9EB6 ^ 0x9EB6) != 0)) { throw new AssertionError(); }\n\n    checkState(!successorIterator.hasNext());\n    if (!nodeIterator.hasNext()) {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> graph) {\n      super(graph);\nif (((0xC249 ^ 0xC249) != 0)) { throw new AssertionError(); }\n\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\nif (((0xA092 ^ 0xA092) != 0)) { throw new AssertionError(); }\n\n      while (true) {\n        if (successorIterator.hasNext()) {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!advance()) {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> graph) {\n      super(graph);\nif (((0x4600 ^ 0x4600) != 0)) { throw new AssertionError(); }\n\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(graph.nodes().size() + 1);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\nif (((0xAF7A ^ 0xAF7A) != 0)) { throw new AssertionError(); }\n\n      while (true) {\n        /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N otherNode = successorIterator.next();\n          if (!visitedNodes.contains(otherNode)) {\n            // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), otherNode);\n          }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node);\n        if (!advance()) {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "0a08d2f5b8d0b2c09cca9f6be2047888b86699c688088aacb27ad030973b9d38", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "insert-dead-branches", "level": 7, "line_count": 143, "local_path": "code-injection/insert-dead-branches/I07__google-guava__EndpointPairIterator__2efa09b3.java", "order": 7, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 7}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-9e2a2efa09b3-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 470, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4575300fe4a5-I08", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> of(BaseGraph<N> graph) {\n    return graph.isDirected() ? new Directed<N>(graph) : new Undirected<N>(graph);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> graph) {\n{\n  int factorial = 1;\n  for (int currentFactor = 2; currentFactor <= 4; currentFactor++) {\n    factorial *= currentFactor;\n  }\n}\n\n    this.graph = graph;\n    this.nodeIterator = graph.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean advance() {\n    checkState(!successorIterator.hasNext());\n    if (!nodeIterator.hasNext()) {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> graph) {\n      super(graph);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        if (successorIterator.hasNext()) {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!advance()) {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> graph) {\n      super(graph);\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(graph.nodes().size() + 1);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N otherNode = successorIterator.next();\n          if (!visitedNodes.contains(otherNode)) {\n            // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), otherNode);\n          }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node);\n        if (!advance()) {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "69dd8c7b832c6ab21a64a30046a9fec7215d1ec0202979bd927e77f91d439563", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 136, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__EndpointPairIterator__300fe4a5.java", "order": 8, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 6}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-4575300fe4a5-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 471, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-71c506849cff-I09", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> of(BaseGraph<N> graph) {\n    return graph.isDirected() ? new Directed<N>(graph) : new Undirected<N>(graph);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> graph) {\n    this.graph = graph;\n    this.nodeIterator = graph.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean advance() {\n    checkState(!successorIterator.hasNext());\n    if (!nodeIterator.hasNext()) {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> graph) {\n      super(graph);\n{boolean lI0O_9893f0a8=((0x7C0F^0x7C0F)!=0);lI0O_9893f0a8=!(!lI0O_9893f0a8);}\n\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        if (successorIterator.hasNext()) {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!advance()) {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> graph) {\n      super(graph);\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(graph.nodes().size() + 1);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N otherNode = successorIterator.next();\n          if (!visitedNodes.contains(otherNode)) {\n            // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), otherNode);\n          }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node);\n        if (!advance()) {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "474fd229119af947f1968869f08a570d14dbaf69fdddd89402f24c479c0e318c", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 131, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__EndpointPairIterator__06849cff.java", "order": 9, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-71c506849cff-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 472, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-78cc8ea2ff23-I10", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull; import com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets; import java.util.Iterator; import java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> of(BaseGraph<N> graph) {\n    return graph.isDirected() ? new Directed<N>(graph) : new Undirected<N>(graph); } private EndpointPairIterator(BaseGraph<N> graph) { this.graph = graph;\n    this.nodeIterator = graph.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean advance() { checkState(!successorIterator.hasNext()); if (!nodeIterator.hasNext()) {\n      return false; } node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator(); return true; } /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> graph) { super(graph);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        if (successorIterator.hasNext()) {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next()); }\n        if (!advance()) { return endOfData();\n        }\n      }\n    } }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes; private Undirected(BaseGraph<N> graph) {\n      super(graph);\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(graph.nodes().size() + 1);\n    }\n\n    @Override protected @Nullable EndpointPair<N> computeNext() {\n      while (true) { /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */ requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) { N otherNode = successorIterator.next();\n          if (!visitedNodes.contains(otherNode)) { // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), otherNode); }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node); if (!advance()) { visitedNodes = null;\n          return endOfData(); } }\n    } } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "a360598936f63aef27575727facfc0c4abd60ecae8ba1ca761d9e86c4e1432e9", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "partially-compact-layout", "level": 10, "line_count": 96, "local_path": "layout/partially-compact-layout/I10__google-guava__EndpointPairIterator__8ea2ff23.java", "order": 10, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 75, "line_break_groups_removed": 30, "line_breaks_removed": 33, "whitespace_characters_removed": 151}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-78cc8ea2ff23-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 473, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d798f78ce83e-I11", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> of(BaseGraph<N> graph) {\n    return graph.isDirected() ? new Directed<N>(graph) : new Undirected<N>(graph);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> graph) {\n    this.graph = graph;\n    this.nodeIterator = graph.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean advance() {\n    checkState(!successorIterator.hasNext());\n    if (!nodeIterator.hasNext()) {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> graph) {\n      super(graph);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        if (successorIterator.hasNext()) {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!advance()) {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> graph) {\n      super(graph);\n      final int a = 2;\n      final int b = -1;\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(graph.nodes().size() + (a + b));\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N otherNode = successorIterator.next();\n          if (!visitedNodes.contains(otherNode)) {\n            // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), otherNode);\n          }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node);\n        if (!advance()) {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ac13d63000027f7c4e8bd4b351c13b309a4bd619dc86cd607cbed98f0269ae11", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 131, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__EndpointPairIterator__f78ce83e.java", "order": 11, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 1, "intermediate_variables_introduced": 2, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-d798f78ce83e-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 474, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-932deb4ba7e9-I12", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> of(BaseGraph<N> graph) {\n    return graph.isDirected() ? new Directed<N>(graph) : new Undirected<N>(graph);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> graph) {\n    this.graph = graph;\n    this.nodeIterator = graph.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean advance() {\n    checkState(!successorIterator.hasNext());\n    if (!nodeIterator.hasNext()) {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> graph) {\n      super(graph);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        if (successorIterator.hasNext()) {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!advance()) {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> graph) {\n      super(graph);\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(graph.nodes().size() + 1);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N otherNode = successorIterator.next();\n          if (!visitedNodes.contains(otherNode)) {\n            // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), otherNode);\n          }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node);\n        if (!advance()) {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 129, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__EndpointPairIterator__eb4ba7e9.java", "order": 12, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-932deb4ba7e9-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 475, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3649510cbce9-I13", "source": "package com.google.common.graph;\nimport static com.google.common.base.Preconditions.checkState;\nimport static java.util.Objects.requireNonNull;\nimport com.google.common.collect.AbstractIterator;\nimport com.google.common.collect.ImmutableSet;\nimport com.google.common.collect.Sets;\nimport java.util.Iterator;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to facilitate the set returned by {@link Graph#edges()}.\n *\n * @author James Sexton\n */\nabstract class EndpointPairIterator<N> extends AbstractIterator<EndpointPair<N>> {\n  private final BaseGraph<N> graph;\n  private final Iterator<N> nodeIterator;\n\n  @Nullable N node = null; // null is safe as an initial value because graphs don't allow null nodes\n\n  Iterator<N> successorIterator = ImmutableSet.<N>of().iterator();\n\n  static <N> EndpointPairIterator<N> of(BaseGraph<N> graph) {\n    return graph.isDirected() ? new Directed<N>(graph) : new Undirected<N>(graph);\n  }\n\n  private EndpointPairIterator(BaseGraph<N> graph) {\n    this.graph = graph;\n    this.nodeIterator = graph.nodes().iterator();\n  }\n\n  /**\n   * Called after {@link #successorIterator} is exhausted. Advances {@link #node} to the next node\n   * and updates {@link #successorIterator} to iterate through the successors of {@link #node}.\n   */\n  final boolean advance() {\n    checkState(!successorIterator.hasNext());\n    if (!nodeIterator.hasNext()) {\n      return false;\n    }\n    node = nodeIterator.next();\n    successorIterator = graph.successors(node).iterator();\n    return true;\n  }\n\n  /**\n   * If the graph is directed, each ordered [source, target] pair will be visited once if there is\n   * an edge connecting them.\n   */\n  private static final class Directed<N> extends EndpointPairIterator<N> {\n    private Directed(BaseGraph<N> graph) {\n      super(graph);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        if (successorIterator.hasNext()) {\n          // requireNonNull is safe because successorIterator is empty until we set this.node.\n          return EndpointPair.ordered(requireNonNull(node), successorIterator.next());\n        }\n        if (!advance()) {\n          return endOfData();\n        }\n      }\n    }\n  }\n\n  /**\n   * If the graph is undirected, each unordered [node, otherNode] pair (except self-loops) will be\n   * visited twice if there is an edge connecting them. To avoid returning duplicate {@link\n   * EndpointPair}s, we keep track of the nodes that we have visited. When processing endpoint\n   * pairs, we skip if the \"other node\" is in the visited set, as shown below:\n   *\n   * <pre>\n   * Nodes = {N1, N2, N3, N4}\n   *    N2           __\n   *   /  \\         |  |\n   * N1----N3      N4__|\n   *\n   * Visited Nodes = {}\n   * EndpointPair [N1, N2] - return\n   * EndpointPair [N1, N3] - return\n   * Visited Nodes = {N1}\n   * EndpointPair [N2, N1] - skip\n   * EndpointPair [N2, N3] - return\n   * Visited Nodes = {N1, N2}\n   * EndpointPair [N3, N1] - skip\n   * EndpointPair [N3, N2] - skip\n   * Visited Nodes = {N1, N2, N3}\n   * EndpointPair [N4, N4] - return\n   * Visited Nodes = {N1, N2, N3, N4}\n   * </pre>\n   */\n  private static final class Undirected<N> extends EndpointPairIterator<N> {\n    // It's a little weird that we add `null` to this set, but it makes for slightly simpler code.\n    private @Nullable Set<@Nullable N> visitedNodes;\n\n    private Undirected(BaseGraph<N> graph) {\n      super(graph);\n      this.visitedNodes = Sets.newHashSetWithExpectedSize(graph.nodes().size() + 1);\n    }\n\n    @Override\n    protected @Nullable EndpointPair<N> computeNext() {\n      while (true) {\n        /*\n         * requireNonNull is safe because visitedNodes isn't cleared until this method calls\n         * endOfData() (after which this method is never called again).\n         */\n        requireNonNull(visitedNodes);\n        while (successorIterator.hasNext()) {\n          N otherNode = successorIterator.next();\n          if (!visitedNodes.contains(otherNode)) {\n            // requireNonNull is safe because successorIterator is empty until we set node.\n            return EndpointPair.unordered(requireNonNull(node), otherNode);\n          }\n        }\n        // Add to visited set *after* processing neighbors so we still include self-loops.\n        visitedNodes.add(node);\n        if (!advance()) {\n          visitedNodes = null;\n          return endOfData();\n        }\n      }\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__EndpointPairIterator__4ea4a10d.java", "base_sample_id": "source-0ed7756ed89a3b15", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/EndpointPairIterator.java", "interference": "lower-for-to-while", "level": 13, "line_count": 129, "local_path": "control-flow/lower-for-to-while/I13__google-guava__EndpointPairIterator__510cbce9.java", "order": 13, "original_content_sha256": "25251b236e86b7f5e1c9e773d5b06bf93b40ad3ee18b7f614a0b794263fc02e7", "parent_variant_id": "int-ad514ea4a10d-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/EndpointPairIterator.java#L29-L147", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "EndpointPairIterator", "variant_id": "int-3649510cbce9-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 476, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-90578299712c-SRC", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> delegate();\n\n  @Override\n  public Set<N> nodes() {\n    return delegate().nodes();\n  }\n\n  @Override\n  public Set<E> edges() {\n    return delegate().edges();\n  }\n\n  @Override\n  public boolean isDirected() {\n    return delegate().isDirected();\n  }\n\n  @Override\n  public boolean allowsParallelEdges() {\n    return delegate().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean allowsSelfLoops() {\n    return delegate().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> nodeOrder() {\n    return delegate().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> edgeOrder() {\n    return delegate().edgeOrder();\n  }\n\n  @Override\n  public Set<N> adjacentNodes(N node) {\n    return delegate().adjacentNodes(node);\n  }\n\n  @Override\n  public Set<N> predecessors(N node) {\n    return delegate().predecessors(node);\n  }\n\n  @Override\n  public Set<N> successors(N node) {\n    return delegate().successors(node);\n  }\n\n  @Override\n  public Set<E> incidentEdges(N node) {\n    return delegate().incidentEdges(node);\n  }\n\n  @Override\n  public Set<E> inEdges(N node) {\n    return delegate().inEdges(node);\n  }\n\n  @Override\n  public Set<E> outEdges(N node) {\n    return delegate().outEdges(node);\n  }\n\n  @Override\n  public EndpointPair<N> incidentNodes(E edge) {\n    return delegate().incidentNodes(edge);\n  }\n\n  @Override\n  public Set<E> adjacentEdges(E edge) {\n    return delegate().adjacentEdges(edge);\n  }\n\n  @Override\n  public int degree(N node) {\n    return delegate().degree(node);\n  }\n\n  @Override\n  public int inDegree(N node) {\n    return delegate().inDegree(node);\n  }\n\n  @Override\n  public int outDegree(N node) {\n    return delegate().outDegree(node);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(N nodeU, N nodeV) {\n    return delegate().edgesConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgesConnecting(endpoints);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(N nodeU, N nodeV) {\n    return delegate().edgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgeConnecting(endpoints);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(N nodeU, N nodeV) {\n    return delegate().edgeConnectingOrNull(nodeU, nodeV);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(EndpointPair<N> endpoints) {\n    return delegate().edgeConnectingOrNull(endpoints);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(N nodeU, N nodeV) {\n    return delegate().hasEdgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().hasEdgeConnecting(endpoints);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": null, "level": 0, "line_count": 146, "local_path": "source-original/SRC__google-guava__ForwardingNetwork__8299712c.java", "order": 0, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-90578299712c-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 477, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f5c965f13765-I01", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> delegate();\n\n  @Override\n  public Set<N> nodes() {\n    return delegate().nodes();\n  }\n\n  @Override\n  public Set<E> edges() {\n    return delegate().edges();\n  }\n\n  @Override\n  public boolean isDirected() {\n    return delegate().isDirected();\n  }\n\n  @Override\n  public boolean allowsParallelEdges() {\n    return delegate().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean allowsSelfLoops() {\n    return delegate().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> nodeOrder() {\n    return delegate().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> edgeOrder() {\n    return delegate().edgeOrder();\n  }\n\n  @Override\n  public Set<N> adjacentNodes(N node) {\n    return delegate().adjacentNodes(node);\n  }\n\n  @Override\n  public Set<N> predecessors(N node) {\n    return delegate().predecessors(node);\n  }\n\n  @Override\n  public Set<N> successors(N node) {\n    return delegate().successors(node);\n  }\n\n  @Override\n  public Set<E> incidentEdges(N node) {\n    return delegate().incidentEdges(node);\n  }\n\n  @Override\n  public Set<E> inEdges(N node) {\n    return delegate().inEdges(node);\n  }\n\n  @Override\n  public Set<E> outEdges(N node) {\n    return delegate().outEdges(node);\n  }\n\n  @Override\n  public EndpointPair<N> incidentNodes(E edge) {\n    return delegate().incidentNodes(edge);\n  }\n\n  @Override\n  public Set<E> adjacentEdges(E edge) {\n    return delegate().adjacentEdges(edge);\n  }\n\n  @Override\n  public int degree(N node) {\n    return delegate().degree(node);\n  }\n\n  @Override\n  public int inDegree(N node) {\n    return delegate().inDegree(node);\n  }\n\n  @Override\n  public int outDegree(N node) {\n    return delegate().outDegree(node);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(N nodeU, N nodeV) {\n    return delegate().edgesConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgesConnecting(endpoints);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(N nodeU, N nodeV) {\n    return delegate().edgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgeConnecting(endpoints);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(N nodeU, N nodeV) {\n    return delegate().edgeConnectingOrNull(nodeU, nodeV);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(EndpointPair<N> endpoints) {\n    return delegate().edgeConnectingOrNull(endpoints);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(N nodeU, N nodeV) {\n    return delegate().hasEdgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().hasEdgeConnecting(endpoints);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "0db2e82b5ec93da59499a7632abae89d768ac8df0ee59341b8a81a5e8ec64cc7", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "remove-comments", "level": 1, "line_count": 146, "local_path": "comments/remove-comments/I01__google-guava__ForwardingNetwork__65f13765.java", "order": 1, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 234, "comments_removed": 1}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-f5c965f13765-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 478, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c442599dbb9f-I02", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> del();\n\n  @Override\n  public Set<N> nod() {\n    return del().nodes();\n  }\n\n  @Override\n  public Set<E> edg() {\n    return del().edges();\n  }\n\n  @Override\n  public boolean is() {\n    return del().isDirected();\n  }\n\n  @Override\n  public boolean allows() {\n    return del().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean allows2() {\n    return del().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> node() {\n    return del().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> edge() {\n    return del().edgeOrder();\n  }\n\n  @Override\n  public Set<N> adjacent(N nod) {\n    return del().adjacentNodes(nod);\n  }\n\n  @Override\n  public Set<N> pre(N nod2) {\n    return del().predecessors(nod2);\n  }\n\n  @Override\n  public Set<N> suc(N nod3) {\n    return del().successors(nod3);\n  }\n\n  @Override\n  public Set<E> incident(N nod4) {\n    return del().incidentEdges(nod4);\n  }\n\n  @Override\n  public Set<E> in(N nod5) {\n    return del().inEdges(nod5);\n  }\n\n  @Override\n  public Set<E> out(N nod6) {\n    return del().outEdges(nod6);\n  }\n\n  @Override\n  public EndpointPair<N> incident2(E edg) {\n    return del().incidentNodes(edg);\n  }\n\n  @Override\n  public Set<E> adjacent2(E edg2) {\n    return del().adjacentEdges(edg2);\n  }\n\n  @Override\n  public int deg(N nod7) {\n    return del().degree(nod7);\n  }\n\n  @Override\n  public int in2(N nod8) {\n    return del().inDegree(nod8);\n  }\n\n  @Override\n  public int out2(N nod9) {\n    return del().outDegree(nod9);\n  }\n\n  @Override\n  public Set<E> edges(N node, N node2) {\n    return del().edgesConnecting(node, node2);\n  }\n\n  @Override\n  public Set<E> edges(EndpointPair<N> end) {\n    return del().edgesConnecting(end);\n  }\n\n  @Override\n  public Optional<E> edge2(N node3, N node4) {\n    return del().edgeConnecting(node3, node4);\n  }\n\n  @Override\n  public Optional<E> edge2(EndpointPair<N> end2) {\n    return del().edgeConnecting(end2);\n  }\n\n  @Override\n  public @Nullable E edge3(N node5, N node6) {\n    return del().edgeConnectingOrNull(node5, node6);\n  }\n\n  @Override\n  public @Nullable E edge3(EndpointPair<N> end3) {\n    return del().edgeConnectingOrNull(end3);\n  }\n\n  @Override\n  public boolean has(N node7, N node8) {\n    return del().hasEdgeConnecting(node7, node8);\n  }\n\n  @Override\n  public boolean has(EndpointPair<N> end4) {\n    return del().hasEdgeConnecting(end4);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "862291bf5af88aa7ae6595d459a85e8e9ca704f0a7718600f96375d228bda13c", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "shorten-identifiers", "level": 2, "line_count": 146, "local_path": "identifiers/shorten-identifiers/I02__google-guava__ForwardingNetwork__599dbb9f.java", "order": 2, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 23, "identifiers_declared": 23, "local_name_collisions_avoided": 19, "method_calls_renamed": 26, "method_declarations_renamed": 27, "method_name_collisions_avoided": 7, "method_name_groups": 23}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-c442599dbb9f-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 479, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f5d55cd882dd-I03", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> readPath();\n\n  @Override\n  public Set<N> check() {\n    return readPath().nodes();\n  }\n\n  @Override\n  public Set<E> write() {\n    return readPath().edges();\n  }\n\n  @Override\n  public boolean readStatus() {\n    return readPath().isDirected();\n  }\n\n  @Override\n  public boolean validateAccount() {\n    return readPath().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean validateSession() {\n    return readPath().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> checkPath() {\n    return readPath().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> sendIndex() {\n    return readPath().edgeOrder();\n  }\n\n  @Override\n  public Set<N> createRequest(N size) {\n    return readPath().adjacentNodes(size);\n  }\n\n  @Override\n  public Set<N> updateStatus(N date) {\n    return readPath().predecessors(date);\n  }\n\n  @Override\n  public Set<N> updateData(N mode) {\n    return readPath().successors(mode);\n  }\n\n  @Override\n  public Set<E> validateValue(N step) {\n    return readPath().incidentEdges(step);\n  }\n\n  @Override\n  public Set<E> release(N data) {\n    return readPath().inEdges(data);\n  }\n\n  @Override\n  public Set<E> sendItem(N user) {\n    return readPath().outEdges(user);\n  }\n\n  @Override\n  public EndpointPair<N> removeAddress(E item) {\n    return readPath().incidentNodes(item);\n  }\n\n  @Override\n  public Set<E> createAccount(E flag) {\n    return readPath().adjacentEdges(flag);\n  }\n\n  @Override\n  public int submit(N path) {\n    return readPath().degree(path);\n  }\n\n  @Override\n  public int saveMode(N price) {\n    return readPath().inDegree(price);\n  }\n\n  @Override\n  public int findCache(N age) {\n    return readPath().outDegree(age);\n  }\n\n  @Override\n  public Set<E> validateBalance(N cache, N order) {\n    return readPath().edgesConnecting(cache, order);\n  }\n\n  @Override\n  public Set<E> validateBalance(EndpointPair<N> operation) {\n    return readPath().edgesConnecting(operation);\n  }\n\n  @Override\n  public Optional<E> validateRecord(N count, N limit) {\n    return readPath().edgeConnecting(count, limit);\n  }\n\n  @Override\n  public Optional<E> validateRecord(EndpointPair<N> finalData) {\n    return readPath().edgeConnecting(finalData);\n  }\n\n  @Override\n  public @Nullable E validateAddress(N batch, N total) {\n    return readPath().edgeConnectingOrNull(batch, total);\n  }\n\n  @Override\n  public @Nullable E validateAddress(EndpointPair<N> finalMode) {\n    return readPath().edgeConnectingOrNull(finalMode);\n  }\n\n  @Override\n  public boolean validateMessage(N score, N event) {\n    return readPath().hasEdgeConnecting(score, event);\n  }\n\n  @Override\n  public boolean validateMessage(EndpointPair<N> remoteKey) {\n    return readPath().hasEdgeConnecting(remoteKey);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a3b6bc57439c5ec1ae3cc119dff4e98a275a6ffca79de083e0596249211716ad", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "mislead-identifiers", "level": 3, "line_count": 146, "local_path": "identifiers/mislead-identifiers/I03__google-guava__ForwardingNetwork__5cd882dd.java", "order": 3, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 23, "identifiers_declared": 23, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 37, "local_exact_length_matches": 21, "local_random_pool_selections": 23, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 26, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 4, "method_declarations_renamed": 27, "method_exact_length_matches": 20, "method_name_groups": 23, "method_random_pool_selections": 23, "method_total_length_difference": 11}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-f5d55cd882dd-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 480, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f8eb52082e4e-I04", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> a();\n\n  @Override\n  public Set<N> b() {\n    return a().nodes();\n  }\n\n  @Override\n  public Set<E> c() {\n    return a().edges();\n  }\n\n  @Override\n  public boolean d() {\n    return a().isDirected();\n  }\n\n  @Override\n  public boolean e() {\n    return a().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean f() {\n    return a().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> g() {\n    return a().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> h() {\n    return a().edgeOrder();\n  }\n\n  @Override\n  public Set<N> i(N a) {\n    return a().adjacentNodes(a);\n  }\n\n  @Override\n  public Set<N> j(N b) {\n    return a().predecessors(b);\n  }\n\n  @Override\n  public Set<N> k(N c) {\n    return a().successors(c);\n  }\n\n  @Override\n  public Set<E> l(N d) {\n    return a().incidentEdges(d);\n  }\n\n  @Override\n  public Set<E> m(N e) {\n    return a().inEdges(e);\n  }\n\n  @Override\n  public Set<E> n(N f) {\n    return a().outEdges(f);\n  }\n\n  @Override\n  public EndpointPair<N> o(E g) {\n    return a().incidentNodes(g);\n  }\n\n  @Override\n  public Set<E> p(E h) {\n    return a().adjacentEdges(h);\n  }\n\n  @Override\n  public int q(N i) {\n    return a().degree(i);\n  }\n\n  @Override\n  public int r(N j) {\n    return a().inDegree(j);\n  }\n\n  @Override\n  public int s(N k) {\n    return a().outDegree(k);\n  }\n\n  @Override\n  public Set<E> t(N l, N m) {\n    return a().edgesConnecting(l, m);\n  }\n\n  @Override\n  public Set<E> t(EndpointPair<N> n) {\n    return a().edgesConnecting(n);\n  }\n\n  @Override\n  public Optional<E> u(N o, N p) {\n    return a().edgeConnecting(o, p);\n  }\n\n  @Override\n  public Optional<E> u(EndpointPair<N> q) {\n    return a().edgeConnecting(q);\n  }\n\n  @Override\n  public @Nullable E v(N r, N s) {\n    return a().edgeConnectingOrNull(r, s);\n  }\n\n  @Override\n  public @Nullable E v(EndpointPair<N> t) {\n    return a().edgeConnectingOrNull(t);\n  }\n\n  @Override\n  public boolean w(N u, N v) {\n    return a().hasEdgeConnecting(u, v);\n  }\n\n  @Override\n  public boolean w(EndpointPair<N> w) {\n    return a().hasEdgeConnecting(w);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e6e0d6b3ae2bd402a9115a36611bd2feea047481b189f80e95d44da3ca9bc53d", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "garble-identifiers", "level": 4, "line_count": 146, "local_path": "identifiers/garble-identifiers/I04__google-guava__ForwardingNetwork__52082e4e.java", "order": 4, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 23, "identifiers_declared": 23, "local_name_collisions_avoided": 0, "method_calls_renamed": 26, "method_declarations_renamed": 27, "method_name_collisions_avoided": 0, "method_name_groups": 23}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-f8eb52082e4e-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 481, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7d83afcf52da-I05", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> delegate();\n\n  @Override\n  public Set<N> nodes() {\n    return delegate().nodes();\n  }\n\n  @Override\n  public Set<E> edges() {\n    return delegate().edges();\n  }\n\n  @Override\n  public boolean isDirected() {\n    return delegate().isDirected();\n  }\n\n  @Override\n  public boolean allowsParallelEdges() {\n    return delegate().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean allowsSelfLoops() {\n    return delegate().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> nodeOrder() {\n    return delegate().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> edgeOrder() {\n    return delegate().edgeOrder();\n  }\n\n  @Override\n  public Set<N> adjacentNodes(N node) {\n    return delegate().adjacentNodes(node);\n  }\n\n  @Override\n  public Set<N> predecessors(N node) {\n    return delegate().predecessors(node);\n  }\n\n  @Override\n  public Set<N> successors(N node) {\n    return delegate().successors(node);\n  }\n\n  @Override\n  public Set<E> incidentEdges(N node) {\n    return delegate().incidentEdges(node);\n  }\n\n  @Override\n  public Set<E> inEdges(N node) {\n    return delegate().inEdges(node);\n  }\n\n  @Override\n  public Set<E> outEdges(N node) {\n    return delegate().outEdges(node);\n  }\n\n  @Override\n  public EndpointPair<N> incidentNodes(E edge) {\n    return delegate().incidentNodes(edge);\n  }\n\n  @Override\n  public Set<E> adjacentEdges(E edge) {\n    return delegate().adjacentEdges(edge);\n  }\n\n  @Override\n  public int degree(N node) {\n    return delegate().degree(node);\n  }\n\n  @Override\n  public int inDegree(N node) {\n    return delegate().inDegree(node);\n  }\n\n  @Override\n  public int outDegree(N node) {\n    return delegate().outDegree(node);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(N nodeU, N nodeV) {\n    return delegate().edgesConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgesConnecting(endpoints);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(N nodeU, N nodeV) {\n    return delegate().edgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgeConnecting(endpoints);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(N nodeU, N nodeV) {\n    return delegate().edgeConnectingOrNull(nodeU, nodeV);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(EndpointPair<N> endpoints) {\n    return delegate().edgeConnectingOrNull(endpoints);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(N nodeU, N nodeV) {\n    return delegate().hasEdgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().hasEdgeConnecting(endpoints);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "encode-integer-literals", "level": 5, "line_count": 146, "local_path": "expressions/encode-integer-literals/I05__google-guava__ForwardingNetwork__afcf52da.java", "order": 5, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-7d83afcf52da-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 482, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-38e6bbc506e0-I06", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> delegate();\n\n  @Override\n  public Set<N> nodes() {\n    return delegate().nodes();\n  }\n\n  @Override\n  public Set<E> edges() {\n    return delegate().edges();\n  }\n\n  @Override\n  public boolean isDirected() {\n    return delegate().isDirected();\n  }\n\n  @Override\n  public boolean allowsParallelEdges() {\n    return delegate().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean allowsSelfLoops() {\n    return delegate().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> nodeOrder() {\n    return delegate().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> edgeOrder() {\n    return delegate().edgeOrder();\n  }\n\n  @Override\n  public Set<N> adjacentNodes(N node) {\n    return delegate().adjacentNodes(node);\n  }\n\n  @Override\n  public Set<N> predecessors(N node) {\n    return delegate().predecessors(node);\n  }\n\n  @Override\n  public Set<N> successors(N node) {\n    return delegate().successors(node);\n  }\n\n  @Override\n  public Set<E> incidentEdges(N node) {\n    return delegate().incidentEdges(node);\n  }\n\n  @Override\n  public Set<E> inEdges(N node) {\n    return delegate().inEdges(node);\n  }\n\n  @Override\n  public Set<E> outEdges(N node) {\n    return delegate().outEdges(node);\n  }\n\n  @Override\n  public EndpointPair<N> incidentNodes(E edge) {\n    return delegate().incidentNodes(edge);\n  }\n\n  @Override\n  public Set<E> adjacentEdges(E edge) {\n    return delegate().adjacentEdges(edge);\n  }\n\n  @Override\n  public int degree(N node) {\n    return delegate().degree(node);\n  }\n\n  @Override\n  public int inDegree(N node) {\n    return delegate().inDegree(node);\n  }\n\n  @Override\n  public int outDegree(N node) {\n    return delegate().outDegree(node);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(N nodeU, N nodeV) {\n    return delegate().edgesConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgesConnecting(endpoints);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(N nodeU, N nodeV) {\n    return delegate().edgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgeConnecting(endpoints);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(N nodeU, N nodeV) {\n    return delegate().edgeConnectingOrNull(nodeU, nodeV);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(EndpointPair<N> endpoints) {\n    return delegate().edgeConnectingOrNull(endpoints);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(N nodeU, N nodeV) {\n    return delegate().hasEdgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().hasEdgeConnecting(endpoints);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "invert-conditions", "level": 6, "line_count": 146, "local_path": "expressions/invert-conditions/I06__google-guava__ForwardingNetwork__bbc506e0.java", "order": 6, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-38e6bbc506e0-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 483, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-09baa932eac4-I07", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> delegate();\n\n  @Override\n  public Set<N> nodes() {\nif (((0xD969 ^ 0xD969) != 0)) { throw new AssertionError(); }\n\n    return delegate().nodes();\n  }\n\n  @Override\n  public Set<E> edges() {\nif (((0x8B37 ^ 0x8B37) != 0)) { throw new AssertionError(); }\n\n    return delegate().edges();\n  }\n\n  @Override\n  public boolean isDirected() {\nif (((0xD4CC ^ 0xD4CC) != 0)) { throw new AssertionError(); }\n\n    return delegate().isDirected();\n  }\n\n  @Override\n  public boolean allowsParallelEdges() {\nif (((0x1D53 ^ 0x1D53) != 0)) { throw new AssertionError(); }\n\n    return delegate().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean allowsSelfLoops() {\nif (((0x6041 ^ 0x6041) != 0)) { throw new AssertionError(); }\n\n    return delegate().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> nodeOrder() {\nif (((0x71E2 ^ 0x71E2) != 0)) { throw new AssertionError(); }\n\n    return delegate().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> edgeOrder() {\nif (((0x1B9D ^ 0x1B9D) != 0)) { throw new AssertionError(); }\n\n    return delegate().edgeOrder();\n  }\n\n  @Override\n  public Set<N> adjacentNodes(N node) {\nif (((0xEE36 ^ 0xEE36) != 0)) { throw new AssertionError(); }\n\n    return delegate().adjacentNodes(node);\n  }\n\n  @Override\n  public Set<N> predecessors(N node) {\nif (((0x9C5E ^ 0x9C5E) != 0)) { throw new AssertionError(); }\n\n    return delegate().predecessors(node);\n  }\n\n  @Override\n  public Set<N> successors(N node) {\nif (((0x3568 ^ 0x3568) != 0)) { throw new AssertionError(); }\n\n    return delegate().successors(node);\n  }\n\n  @Override\n  public Set<E> incidentEdges(N node) {\nif (((0x435C ^ 0x435C) != 0)) { throw new AssertionError(); }\n\n    return delegate().incidentEdges(node);\n  }\n\n  @Override\n  public Set<E> inEdges(N node) {\nif (((0xC083 ^ 0xC083) != 0)) { throw new AssertionError(); }\n\n    return delegate().inEdges(node);\n  }\n\n  @Override\n  public Set<E> outEdges(N node) {\nif (((0x83B6 ^ 0x83B6) != 0)) { throw new AssertionError(); }\n\n    return delegate().outEdges(node);\n  }\n\n  @Override\n  public EndpointPair<N> incidentNodes(E edge) {\nif (((0x6A85 ^ 0x6A85) != 0)) { throw new AssertionError(); }\n\n    return delegate().incidentNodes(edge);\n  }\n\n  @Override\n  public Set<E> adjacentEdges(E edge) {\nif (((0xA9B8 ^ 0xA9B8) != 0)) { throw new AssertionError(); }\n\n    return delegate().adjacentEdges(edge);\n  }\n\n  @Override\n  public int degree(N node) {\nif (((0x9D83 ^ 0x9D83) != 0)) { throw new AssertionError(); }\n\n    return delegate().degree(node);\n  }\n\n  @Override\n  public int inDegree(N node) {\nif (((0x46CE ^ 0x46CE) != 0)) { throw new AssertionError(); }\n\n    return delegate().inDegree(node);\n  }\n\n  @Override\n  public int outDegree(N node) {\nif (((0x760F ^ 0x760F) != 0)) { throw new AssertionError(); }\n\n    return delegate().outDegree(node);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(N nodeU, N nodeV) {\nif (((0x95EB ^ 0x95EB) != 0)) { throw new AssertionError(); }\n\n    return delegate().edgesConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(EndpointPair<N> endpoints) {\nif (((0xF058 ^ 0xF058) != 0)) { throw new AssertionError(); }\n\n    return delegate().edgesConnecting(endpoints);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(N nodeU, N nodeV) {\nif (((0xB98F ^ 0xB98F) != 0)) { throw new AssertionError(); }\n\n    return delegate().edgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(EndpointPair<N> endpoints) {\nif (((0x52DA ^ 0x52DA) != 0)) { throw new AssertionError(); }\n\n    return delegate().edgeConnecting(endpoints);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(N nodeU, N nodeV) {\nif (((0x8D11 ^ 0x8D11) != 0)) { throw new AssertionError(); }\n\n    return delegate().edgeConnectingOrNull(nodeU, nodeV);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(EndpointPair<N> endpoints) {\nif (((0xF89F ^ 0xF89F) != 0)) { throw new AssertionError(); }\n\n    return delegate().edgeConnectingOrNull(endpoints);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(N nodeU, N nodeV) {\nif (((0xAF9F ^ 0xAF9F) != 0)) { throw new AssertionError(); }\n\n    return delegate().hasEdgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(EndpointPair<N> endpoints) {\nif (((0x8FC0 ^ 0x8FC0) != 0)) { throw new AssertionError(); }\n\n    return delegate().hasEdgeConnecting(endpoints);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "309b5e00591d3ed6181914e46df7acf783cc71a9eb966480850c8bfd59d6baaa", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "insert-dead-branches", "level": 7, "line_count": 198, "local_path": "code-injection/insert-dead-branches/I07__google-guava__ForwardingNetwork__a932eac4.java", "order": 7, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 26}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-09baa932eac4-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 484, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-068561adc7d1-I08", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> delegate();\n\n  @Override\n  public Set<N> nodes() {\n{\n  int runningTotal = 0;\n  for (int currentNumber = 1; currentNumber <= 5; currentNumber++) {\n    runningTotal += currentNumber;\n  }\n}\n\n    return delegate().nodes();\n  }\n\n  @Override\n  public Set<E> edges() {\n    return delegate().edges();\n  }\n\n  @Override\n  public boolean isDirected() {\n    return delegate().isDirected();\n  }\n\n  @Override\n  public boolean allowsParallelEdges() {\n    return delegate().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean allowsSelfLoops() {\n    return delegate().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> nodeOrder() {\n    return delegate().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> edgeOrder() {\n    return delegate().edgeOrder();\n  }\n\n  @Override\n  public Set<N> adjacentNodes(N node) {\n    return delegate().adjacentNodes(node);\n  }\n\n  @Override\n  public Set<N> predecessors(N node) {\n    return delegate().predecessors(node);\n  }\n\n  @Override\n  public Set<N> successors(N node) {\n    return delegate().successors(node);\n  }\n\n  @Override\n  public Set<E> incidentEdges(N node) {\n    return delegate().incidentEdges(node);\n  }\n\n  @Override\n  public Set<E> inEdges(N node) {\n    return delegate().inEdges(node);\n  }\n\n  @Override\n  public Set<E> outEdges(N node) {\n    return delegate().outEdges(node);\n  }\n\n  @Override\n  public EndpointPair<N> incidentNodes(E edge) {\n    return delegate().incidentNodes(edge);\n  }\n\n  @Override\n  public Set<E> adjacentEdges(E edge) {\n    return delegate().adjacentEdges(edge);\n  }\n\n  @Override\n  public int degree(N node) {\n    return delegate().degree(node);\n  }\n\n  @Override\n  public int inDegree(N node) {\n    return delegate().inDegree(node);\n  }\n\n  @Override\n  public int outDegree(N node) {\n    return delegate().outDegree(node);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(N nodeU, N nodeV) {\n    return delegate().edgesConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgesConnecting(endpoints);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(N nodeU, N nodeV) {\n    return delegate().edgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgeConnecting(endpoints);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(N nodeU, N nodeV) {\n    return delegate().edgeConnectingOrNull(nodeU, nodeV);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(EndpointPair<N> endpoints) {\n    return delegate().edgeConnectingOrNull(endpoints);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(N nodeU, N nodeV) {\n    return delegate().hasEdgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().hasEdgeConnecting(endpoints);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "db83640e03935b14bd815faa2056d53293e08adf334ac3c8f625bea71d7f65a6", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 153, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__ForwardingNetwork__61adc7d1.java", "order": 8, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 0}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-068561adc7d1-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 485, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e97c087da732-I09", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> delegate();\n\n  @Override\n  public Set<N> nodes() {\n    return delegate().nodes();\n  }\n\n  @Override\n  public Set<E> edges() {\n{int lI0O_9ed4943e=(0x68D6^0x68D6);switch(lI0O_9ed4943e){case 0:lI0O_9ed4943e|=0;break;default:lI0O_9ed4943e&=0;}}\n\n    return delegate().edges();\n  }\n\n  @Override\n  public boolean isDirected() {\n    return delegate().isDirected();\n  }\n\n  @Override\n  public boolean allowsParallelEdges() {\n    return delegate().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean allowsSelfLoops() {\n    return delegate().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> nodeOrder() {\n    return delegate().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> edgeOrder() {\n    return delegate().edgeOrder();\n  }\n\n  @Override\n  public Set<N> adjacentNodes(N node) {\n    return delegate().adjacentNodes(node);\n  }\n\n  @Override\n  public Set<N> predecessors(N node) {\n    return delegate().predecessors(node);\n  }\n\n  @Override\n  public Set<N> successors(N node) {\n    return delegate().successors(node);\n  }\n\n  @Override\n  public Set<E> incidentEdges(N node) {\n    return delegate().incidentEdges(node);\n  }\n\n  @Override\n  public Set<E> inEdges(N node) {\n    return delegate().inEdges(node);\n  }\n\n  @Override\n  public Set<E> outEdges(N node) {\n    return delegate().outEdges(node);\n  }\n\n  @Override\n  public EndpointPair<N> incidentNodes(E edge) {\n    return delegate().incidentNodes(edge);\n  }\n\n  @Override\n  public Set<E> adjacentEdges(E edge) {\n    return delegate().adjacentEdges(edge);\n  }\n\n  @Override\n  public int degree(N node) {\n    return delegate().degree(node);\n  }\n\n  @Override\n  public int inDegree(N node) {\n    return delegate().inDegree(node);\n  }\n\n  @Override\n  public int outDegree(N node) {\n    return delegate().outDegree(node);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(N nodeU, N nodeV) {\n    return delegate().edgesConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgesConnecting(endpoints);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(N nodeU, N nodeV) {\n    return delegate().edgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgeConnecting(endpoints);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(N nodeU, N nodeV) {\n    return delegate().edgeConnectingOrNull(nodeU, nodeV);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(EndpointPair<N> endpoints) {\n    return delegate().edgeConnectingOrNull(endpoints);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(N nodeU, N nodeV) {\n    return delegate().hasEdgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().hasEdgeConnecting(endpoints);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "e9615dd1cc162de68fbee337cc51e686c78d2bfef0708600942299e6443446e8", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 148, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__ForwardingNetwork__087da732.java", "order": 9, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 6}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-e97c087da732-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 486, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b58ecccc5956-I10", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set; import org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */ abstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> { abstract Network<N, E> delegate();\n\n  @Override public Set<N> nodes() {\n    return delegate().nodes();\n  } @Override\n  public Set<E> edges() { return delegate().edges();\n  } @Override\n  public boolean isDirected() {\n    return delegate().isDirected();\n  }\n\n  @Override public boolean allowsParallelEdges() {\n    return delegate().allowsParallelEdges();\n  } @Override public boolean allowsSelfLoops() {\n    return delegate().allowsSelfLoops();\n  } @Override public ElementOrder<N> nodeOrder() { return delegate().nodeOrder(); } @Override\n  public ElementOrder<E> edgeOrder() { return delegate().edgeOrder(); }\n\n  @Override public Set<N> adjacentNodes(N node) {\n    return delegate().adjacentNodes(node); }\n\n  @Override public Set<N> predecessors(N node) {\n    return delegate().predecessors(node);\n  } @Override\n  public Set<N> successors(N node) {\n    return delegate().successors(node);\n  }\n\n  @Override public Set<E> incidentEdges(N node) {\n    return delegate().incidentEdges(node); } @Override\n  public Set<E> inEdges(N node) {\n    return delegate().inEdges(node);\n  } @Override\n  public Set<E> outEdges(N node) {\n    return delegate().outEdges(node); }\n\n  @Override\n  public EndpointPair<N> incidentNodes(E edge) {\n    return delegate().incidentNodes(edge);\n  } @Override\n  public Set<E> adjacentEdges(E edge) {\n    return delegate().adjacentEdges(edge);\n  }\n\n  @Override\n  public int degree(N node) { return delegate().degree(node); }\n\n  @Override\n  public int inDegree(N node) {\n    return delegate().inDegree(node);\n  } @Override public int outDegree(N node) {\n    return delegate().outDegree(node);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(N nodeU, N nodeV) {\n    return delegate().edgesConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(EndpointPair<N> endpoints) { return delegate().edgesConnecting(endpoints);\n  } @Override public Optional<E> edgeConnecting(N nodeU, N nodeV) {\n    return delegate().edgeConnecting(nodeU, nodeV);\n  } @Override\n  public Optional<E> edgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgeConnecting(endpoints); } @Override public @Nullable E edgeConnectingOrNull(N nodeU, N nodeV) {\n    return delegate().edgeConnectingOrNull(nodeU, nodeV);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(EndpointPair<N> endpoints) {\n    return delegate().edgeConnectingOrNull(endpoints); }\n\n  @Override\n  public boolean hasEdgeConnecting(N nodeU, N nodeV) { return delegate().hasEdgeConnecting(nodeU, nodeV); }\n\n  @Override public boolean hasEdgeConnecting(EndpointPair<N> endpoints) { return delegate().hasEdgeConnecting(endpoints); }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "a99970960300d96840753e5996115f81f39351dde7a236ef5730bed3c1f48d26", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "partially-compact-layout", "level": 10, "line_count": 88, "local_path": "layout/partially-compact-layout/I10__google-guava__ForwardingNetwork__cccc5956.java", "order": 10, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 111, "line_break_groups_removed": 44, "line_breaks_removed": 58, "whitespace_characters_removed": 112}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-b58ecccc5956-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 487, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2ff8d8104dd5-I11", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> delegate();\n\n  @Override\n  public Set<N> nodes() {\n    return delegate().nodes();\n  }\n\n  @Override\n  public Set<E> edges() {\n    return delegate().edges();\n  }\n\n  @Override\n  public boolean isDirected() {\n    return delegate().isDirected();\n  }\n\n  @Override\n  public boolean allowsParallelEdges() {\n    return delegate().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean allowsSelfLoops() {\n    return delegate().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> nodeOrder() {\n    return delegate().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> edgeOrder() {\n    return delegate().edgeOrder();\n  }\n\n  @Override\n  public Set<N> adjacentNodes(N node) {\n    return delegate().adjacentNodes(node);\n  }\n\n  @Override\n  public Set<N> predecessors(N node) {\n    return delegate().predecessors(node);\n  }\n\n  @Override\n  public Set<N> successors(N node) {\n    return delegate().successors(node);\n  }\n\n  @Override\n  public Set<E> incidentEdges(N node) {\n    return delegate().incidentEdges(node);\n  }\n\n  @Override\n  public Set<E> inEdges(N node) {\n    return delegate().inEdges(node);\n  }\n\n  @Override\n  public Set<E> outEdges(N node) {\n    return delegate().outEdges(node);\n  }\n\n  @Override\n  public EndpointPair<N> incidentNodes(E edge) {\n    return delegate().incidentNodes(edge);\n  }\n\n  @Override\n  public Set<E> adjacentEdges(E edge) {\n    return delegate().adjacentEdges(edge);\n  }\n\n  @Override\n  public int degree(N node) {\n    return delegate().degree(node);\n  }\n\n  @Override\n  public int inDegree(N node) {\n    return delegate().inDegree(node);\n  }\n\n  @Override\n  public int outDegree(N node) {\n    return delegate().outDegree(node);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(N nodeU, N nodeV) {\n    return delegate().edgesConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgesConnecting(endpoints);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(N nodeU, N nodeV) {\n    return delegate().edgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgeConnecting(endpoints);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(N nodeU, N nodeV) {\n    return delegate().edgeConnectingOrNull(nodeU, nodeV);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(EndpointPair<N> endpoints) {\n    return delegate().edgeConnectingOrNull(endpoints);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(N nodeU, N nodeV) {\n    return delegate().hasEdgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().hasEdgeConnecting(endpoints);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 146, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__ForwardingNetwork__d8104dd5.java", "order": 11, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-2ff8d8104dd5-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 488, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ba9b37c843c3-I12", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> delegate();\n\n  @Override\n  public Set<N> nodes() {\n    return delegate().nodes();\n  }\n\n  @Override\n  public Set<E> edges() {\n    return delegate().edges();\n  }\n\n  @Override\n  public boolean isDirected() {\n    return delegate().isDirected();\n  }\n\n  @Override\n  public boolean allowsParallelEdges() {\n    return delegate().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean allowsSelfLoops() {\n    return delegate().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> nodeOrder() {\n    return delegate().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> edgeOrder() {\n    return delegate().edgeOrder();\n  }\n\n  @Override\n  public Set<N> adjacentNodes(N node) {\n    return delegate().adjacentNodes(node);\n  }\n\n  @Override\n  public Set<N> predecessors(N node) {\n    return delegate().predecessors(node);\n  }\n\n  @Override\n  public Set<N> successors(N node) {\n    return delegate().successors(node);\n  }\n\n  @Override\n  public Set<E> incidentEdges(N node) {\n    return delegate().incidentEdges(node);\n  }\n\n  @Override\n  public Set<E> inEdges(N node) {\n    return delegate().inEdges(node);\n  }\n\n  @Override\n  public Set<E> outEdges(N node) {\n    return delegate().outEdges(node);\n  }\n\n  @Override\n  public EndpointPair<N> incidentNodes(E edge) {\n    return delegate().incidentNodes(edge);\n  }\n\n  @Override\n  public Set<E> adjacentEdges(E edge) {\n    return delegate().adjacentEdges(edge);\n  }\n\n  @Override\n  public int degree(N node) {\n    return delegate().degree(node);\n  }\n\n  @Override\n  public int inDegree(N node) {\n    return delegate().inDegree(node);\n  }\n\n  @Override\n  public int outDegree(N node) {\n    return delegate().outDegree(node);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(N nodeU, N nodeV) {\n    return delegate().edgesConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgesConnecting(endpoints);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(N nodeU, N nodeV) {\n    return delegate().edgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgeConnecting(endpoints);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(N nodeU, N nodeV) {\n    return delegate().edgeConnectingOrNull(nodeU, nodeV);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(EndpointPair<N> endpoints) {\n    return delegate().edgeConnectingOrNull(endpoints);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(N nodeU, N nodeV) {\n    return delegate().hasEdgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().hasEdgeConnecting(endpoints);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 146, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__ForwardingNetwork__37c843c3.java", "order": 12, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-ba9b37c843c3-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 489, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3b676f65e6c3-I13", "source": "package com.google.common.graph;\nimport java.util.Optional;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * A class to allow {@link Network} implementations to be backed by a provided delegate. This is not\n * currently planned to be released as a general-purpose forwarding class.\n *\n * @author James Sexton\n * @author Joshua O'Madadhain\n */\nabstract class ForwardingNetwork<N, E> extends AbstractNetwork<N, E> {\n\n  abstract Network<N, E> delegate();\n\n  @Override\n  public Set<N> nodes() {\n    return delegate().nodes();\n  }\n\n  @Override\n  public Set<E> edges() {\n    return delegate().edges();\n  }\n\n  @Override\n  public boolean isDirected() {\n    return delegate().isDirected();\n  }\n\n  @Override\n  public boolean allowsParallelEdges() {\n    return delegate().allowsParallelEdges();\n  }\n\n  @Override\n  public boolean allowsSelfLoops() {\n    return delegate().allowsSelfLoops();\n  }\n\n  @Override\n  public ElementOrder<N> nodeOrder() {\n    return delegate().nodeOrder();\n  }\n\n  @Override\n  public ElementOrder<E> edgeOrder() {\n    return delegate().edgeOrder();\n  }\n\n  @Override\n  public Set<N> adjacentNodes(N node) {\n    return delegate().adjacentNodes(node);\n  }\n\n  @Override\n  public Set<N> predecessors(N node) {\n    return delegate().predecessors(node);\n  }\n\n  @Override\n  public Set<N> successors(N node) {\n    return delegate().successors(node);\n  }\n\n  @Override\n  public Set<E> incidentEdges(N node) {\n    return delegate().incidentEdges(node);\n  }\n\n  @Override\n  public Set<E> inEdges(N node) {\n    return delegate().inEdges(node);\n  }\n\n  @Override\n  public Set<E> outEdges(N node) {\n    return delegate().outEdges(node);\n  }\n\n  @Override\n  public EndpointPair<N> incidentNodes(E edge) {\n    return delegate().incidentNodes(edge);\n  }\n\n  @Override\n  public Set<E> adjacentEdges(E edge) {\n    return delegate().adjacentEdges(edge);\n  }\n\n  @Override\n  public int degree(N node) {\n    return delegate().degree(node);\n  }\n\n  @Override\n  public int inDegree(N node) {\n    return delegate().inDegree(node);\n  }\n\n  @Override\n  public int outDegree(N node) {\n    return delegate().outDegree(node);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(N nodeU, N nodeV) {\n    return delegate().edgesConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Set<E> edgesConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgesConnecting(endpoints);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(N nodeU, N nodeV) {\n    return delegate().edgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public Optional<E> edgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().edgeConnecting(endpoints);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(N nodeU, N nodeV) {\n    return delegate().edgeConnectingOrNull(nodeU, nodeV);\n  }\n\n  @Override\n  public @Nullable E edgeConnectingOrNull(EndpointPair<N> endpoints) {\n    return delegate().edgeConnectingOrNull(endpoints);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(N nodeU, N nodeV) {\n    return delegate().hasEdgeConnecting(nodeU, nodeV);\n  }\n\n  @Override\n  public boolean hasEdgeConnecting(EndpointPair<N> endpoints) {\n    return delegate().hasEdgeConnecting(endpoints);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__ForwardingNetwork__8299712c.java", "base_sample_id": "source-cca4de4607dc9a9b", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/ForwardingNetwork.java", "interference": "lower-for-to-while", "level": 13, "line_count": 146, "local_path": "control-flow/lower-for-to-while/I13__google-guava__ForwardingNetwork__6f65e6c3.java", "order": 13, "original_content_sha256": "84829b4f2b64cc2880a77abca0a60babaf29572724c07debd9a8695527e60e8c", "parent_variant_id": "int-90578299712c-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/ForwardingNetwork.java#L23-L163", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ForwardingNetwork", "variant_id": "int-3b676f65e6c3-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 490, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c1dca7170204-SRC", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> graph, N node, EdgeType edgeType) {\n    this.graph = graph;\n    this.node = node;\n    this.edgeType = edgeType;\n  }\n\n  @Override\n  public boolean remove(@Nullable Object o) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int size() {\n    if (graph.isDirected()) {\n      return predecessorsOrEmpty(node).size()\n          + successorsOrEmpty(node).size()\n          - (edgeType == EdgeType.BOTH && predecessorsOrEmpty(node).contains(node) ? 1 : 0);\n    } else {\n      return graph.adjacentNodes(node).size();\n    }\n  }\n\n  @Override\n  public boolean contains(@Nullable Object obj) {\n    if (!(obj instanceof EndpointPair)) {\n      return false;\n    }\n    EndpointPair<?> endpointPair = (EndpointPair<?>) obj;\n\n    if (graph.isDirected() != endpointPair.isOrdered()) {\n      return false;\n    }\n\n    if (graph.isDirected()) {\n      Object source = endpointPair.source();\n      Object target = endpointPair.target();\n      return (node.equals(source) && successorsOrEmpty(node).contains(target))\n          || (node.equals(target) && predecessorsOrEmpty(node).contains(source));\n    } else {\n      Set<N> adjacent = graph.adjacentNodes(node);\n      Object nodeU = endpointPair.nodeU();\n      Object nodeV = endpointPair.nodeV();\n\n      return (node.equals(nodeV) && adjacent.contains(nodeU))\n          || (node.equals(nodeU) && adjacent.contains(nodeV));\n    }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> predecessorsOrEmpty(N node) {\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n\n  /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */\n  private Set<N> successorsOrEmpty(N node) {\n    if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": null, "level": 0, "line_count": 93, "local_path": "source-original/SRC__google-guava__IncidentEdgeSet__a7170204.java", "order": 0, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-c1dca7170204-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 505, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-79d8f6dc2a96-I01", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING,  \n    OUTGOING,  \n    BOTH  \n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> graph, N node, EdgeType edgeType) {\n    this.graph = graph;\n    this.node = node;\n    this.edgeType = edgeType;\n  }\n\n  @Override\n  public boolean remove(@Nullable Object o) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int size() {\n    if (graph.isDirected()) {\n      return predecessorsOrEmpty(node).size()\n          + successorsOrEmpty(node).size()\n          - (edgeType == EdgeType.BOTH && predecessorsOrEmpty(node).contains(node) ? 1 : 0);\n    } else {\n      return graph.adjacentNodes(node).size();\n    }\n  }\n\n  @Override\n  public boolean contains(@Nullable Object obj) {\n    if (!(obj instanceof EndpointPair)) {\n      return false;\n    }\n    EndpointPair<?> endpointPair = (EndpointPair<?>) obj;\n\n    if (graph.isDirected() != endpointPair.isOrdered()) {\n      return false;\n    }\n\n    if (graph.isDirected()) {\n      Object source = endpointPair.source();\n      Object target = endpointPair.target();\n      return (node.equals(source) && successorsOrEmpty(node).contains(target))\n          || (node.equals(target) && predecessorsOrEmpty(node).contains(source));\n    } else {\n      Set<N> adjacent = graph.adjacentNodes(node);\n      Object nodeU = endpointPair.nodeU();\n      Object nodeV = endpointPair.nodeV();\n\n      return (node.equals(nodeV) && adjacent.contains(nodeU))\n          || (node.equals(nodeU) && adjacent.contains(nodeV));\n    }\n  }\n\n  \n\n\n\n  private Set<N> predecessorsOrEmpty(N node) {\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n\n  \n\n\n\n  private Set<N> successorsOrEmpty(N node) {\n    if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "174a2878274ccb0c1dc8c114f2a49640685cc9f13913fcc598c0fc6be01c7292", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "remove-comments", "level": 1, "line_count": 93, "local_path": "comments/remove-comments/I01__google-guava__IncidentEdgeSet__f6dc2a96.java", "order": 1, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 476, "comments_removed": 6}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-79d8f6dc2a96-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 506, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-116889d78647-I02", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> gra, N nod, EdgeType edge) {\n    this.graph = gra;\n    this.node = nod;\n    this.edgeType = edge;\n  }\n\n  @Override\n  public boolean rem(@Nullable Object o) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int siz() {\n    if (graph.isDirected()) {\n      return predecessors(node).size()\n          + successors(node).size()\n          - (edgeType == EdgeType.BOTH && predecessors(node).contains(node) ? 1 : 0);\n    } else {\n      return graph.adjacentNodes(node).size();\n    }\n  }\n\n  @Override\n  public boolean con(@Nullable Object obj) {\n    if (!(obj instanceof EndpointPair)) {\n      return false;\n    }\n    EndpointPair<?> endpoint = (EndpointPair<?>) obj;\n\n    if (graph.isDirected() != endpoint.isOrdered()) {\n      return false;\n    }\n\n    if (graph.isDirected()) {\n      Object sou = endpoint.source();\n      Object tar = endpoint.target();\n      return (node.equals(sou) && successors(node).contains(tar))\n          || (node.equals(tar) && predecessors(node).contains(sou));\n    } else {\n      Set<N> adj = graph.adjacentNodes(node);\n      Object node = endpoint.nodeU();\n      Object node2 = endpoint.nodeV();\n\n      return (node.equals(node2) && adj.contains(node))\n          || (node.equals(node) && adj.contains(node2));\n    }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> predecessors(N nod2) {\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(nod2);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n\n  /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */\n  private Set<N> successors(N nod3) {\n    if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(nod3);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "81435b1a2d433ff372f7ba4603a5f210ae235afd3c75a4a0bb7595099acc04a5", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "shorten-identifiers", "level": 2, "line_count": 93, "local_path": "identifiers/shorten-identifiers/I02__google-guava__IncidentEdgeSet__89d78647.java", "order": 2, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 22, "identifiers_declared": 13, "local_name_collisions_avoided": 3, "method_calls_renamed": 5, "method_declarations_renamed": 5, "method_name_collisions_avoided": 0, "method_name_groups": 5}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-116889d78647-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 507, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-94fa1ef41ec9-I03", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> value, N path, EdgeType nextPath) {\n    this.graph = value;\n    this.node = path;\n    this.edgeType = nextPath;\n  }\n\n  @Override\n  public boolean submit(@Nullable Object age) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int sync() {\n    if (graph.isDirected()) {\n      return validateMessage(node).size()\n          + validateAccount(node).size()\n          - (edgeType == EdgeType.BOTH && validateMessage(node).contains(node) ? 1 : 0);\n    } else {\n      return graph.adjacentNodes(node).size();\n    }\n  }\n\n  @Override\n  public boolean readNode(@Nullable Object map) {\n    if (!(map instanceof EndpointPair)) {\n      return false;\n    }\n    EndpointPair<?> defaultValue = (EndpointPair<?>) map;\n\n    if (graph.isDirected() != defaultValue.isOrdered()) {\n      return false;\n    }\n\n    if (graph.isDirected()) {\n      Object config = defaultValue.source();\n      Object status = defaultValue.target();\n      return (node.equals(config) && validateAccount(node).contains(status))\n          || (node.equals(status) && validateMessage(node).contains(config));\n    } else {\n      Set<N> nextMode = graph.adjacentNodes(node);\n      Object price = defaultValue.nodeU();\n      Object batch = defaultValue.nodeV();\n\n      return (node.equals(batch) && nextMode.contains(price))\n          || (node.equals(price) && nextMode.contains(batch));\n    }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> validateMessage(N data) {\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(data);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n\n  /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */\n  private Set<N> validateAccount(N item) {\n    if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(item);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "c3ca44c75455b929337cc00bb28e1718a7f8fec759d9d21b179cab537e8c852f", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "mislead-identifiers", "level": 3, "line_count": 93, "local_path": "identifiers/mislead-identifiers/I03__google-guava__IncidentEdgeSet__1ef41ec9.java", "order": 3, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 22, "identifiers_declared": 13, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 1, "local_exact_length_matches": 12, "local_random_pool_selections": 13, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 5, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 5, "method_exact_length_matches": 3, "method_name_groups": 5, "method_random_pool_selections": 5, "method_total_length_difference": 6}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-94fa1ef41ec9-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 508, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ecc06051ec5c-I04", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> a, N b, EdgeType c) {\n    this.graph = a;\n    this.node = b;\n    this.edgeType = c;\n  }\n\n  @Override\n  public boolean a(@Nullable Object d) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int b() {\n    if (graph.isDirected()) {\n      return d(node).size()\n          + e(node).size()\n          - (edgeType == EdgeType.BOTH && d(node).contains(node) ? 1 : 0);\n    } else {\n      return graph.adjacentNodes(node).size();\n    }\n  }\n\n  @Override\n  public boolean c(@Nullable Object e) {\n    if (!(e instanceof EndpointPair)) {\n      return false;\n    }\n    EndpointPair<?> f = (EndpointPair<?>) e;\n\n    if (graph.isDirected() != f.isOrdered()) {\n      return false;\n    }\n\n    if (graph.isDirected()) {\n      Object g = f.source();\n      Object h = f.target();\n      return (node.equals(g) && e(node).contains(h))\n          || (node.equals(h) && d(node).contains(g));\n    } else {\n      Set<N> i = graph.adjacentNodes(node);\n      Object j = f.nodeU();\n      Object k = f.nodeV();\n\n      return (node.equals(k) && i.contains(j))\n          || (node.equals(j) && i.contains(k));\n    }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> d(N l) {\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(l);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n\n  /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */\n  private Set<N> e(N m) {\n    if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(m);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "0d0f98bda7f14bd965171a662ec7544d05e89e26d5be9c48cb13f71808f74738", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "garble-identifiers", "level": 4, "line_count": 93, "local_path": "identifiers/garble-identifiers/I04__google-guava__IncidentEdgeSet__6051ec5c.java", "order": 4, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 22, "identifiers_declared": 13, "local_name_collisions_avoided": 0, "method_calls_renamed": 5, "method_declarations_renamed": 5, "method_name_collisions_avoided": 0, "method_name_groups": 5}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-ecc06051ec5c-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 509, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8c6ec846301e-I05", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> graph, N node, EdgeType edgeType) {\n    this.graph = graph;\n    this.node = node;\n    this.edgeType = edgeType;\n  }\n\n  @Override\n  public boolean remove(@Nullable Object o) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int size() {\n    if (graph.isDirected()) {\n      return predecessorsOrEmpty(node).size()\n          + successorsOrEmpty(node).size()\n          - (edgeType == EdgeType.BOTH && predecessorsOrEmpty(node).contains(node) ? 0x1 : 0x0);\n    } else {\n      return graph.adjacentNodes(node).size();\n    }\n  }\n\n  @Override\n  public boolean contains(@Nullable Object obj) {\n    if (!(obj instanceof EndpointPair)) {\n      return false;\n    }\n    EndpointPair<?> endpointPair = (EndpointPair<?>) obj;\n\n    if (graph.isDirected() != endpointPair.isOrdered()) {\n      return false;\n    }\n\n    if (graph.isDirected()) {\n      Object source = endpointPair.source();\n      Object target = endpointPair.target();\n      return (node.equals(source) && successorsOrEmpty(node).contains(target))\n          || (node.equals(target) && predecessorsOrEmpty(node).contains(source));\n    } else {\n      Set<N> adjacent = graph.adjacentNodes(node);\n      Object nodeU = endpointPair.nodeU();\n      Object nodeV = endpointPair.nodeV();\n\n      return (node.equals(nodeV) && adjacent.contains(nodeU))\n          || (node.equals(nodeU) && adjacent.contains(nodeV));\n    }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> predecessorsOrEmpty(N node) {\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n\n  /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */\n  private Set<N> successorsOrEmpty(N node) {\n    if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "3be27ae6179fc15b61f05d7cf3dd53dc90e0dfdf549a2df9d6805d58c19077ad", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "encode-integer-literals", "level": 5, "line_count": 93, "local_path": "expressions/encode-integer-literals/I05__google-guava__IncidentEdgeSet__c846301e.java", "order": 5, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 2}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-8c6ec846301e-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 510, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c144d93d1385-I06", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> graph, N node, EdgeType edgeType) {\n    this.graph = graph;\n    this.node = node;\n    this.edgeType = edgeType;\n  }\n\n  @Override\n  public boolean remove(@Nullable Object o) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int size() {\n    if (!((graph.isDirected()))) {\n      return graph.adjacentNodes(node).size();\n    } else {\n      return predecessorsOrEmpty(node).size()\n          + successorsOrEmpty(node).size()\n          - (edgeType == EdgeType.BOTH && predecessorsOrEmpty(node).contains(node) ? 1 : 0);\n    }\n  }\n\n  @Override\n  public boolean contains(@Nullable Object obj) {\n    if (!((!(obj instanceof EndpointPair)))) {} else {\n      return false;\n    }\n    EndpointPair<?> endpointPair = (EndpointPair<?>) obj;\n\n    if (!((graph.isDirected() != endpointPair.isOrdered()))) {} else {\n      return false;\n    }\n\n    if (!((graph.isDirected()))) {\n      Set<N> adjacent = graph.adjacentNodes(node);\n      Object nodeU = endpointPair.nodeU();\n      Object nodeV = endpointPair.nodeV();\n\n      return (node.equals(nodeV) && adjacent.contains(nodeU))\n          || (node.equals(nodeU) && adjacent.contains(nodeV));\n    } else {\n      Object source = endpointPair.source();\n      Object target = endpointPair.target();\n      return (node.equals(source) && successorsOrEmpty(node).contains(target))\n          || (node.equals(target) && predecessorsOrEmpty(node).contains(source));\n    }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> predecessorsOrEmpty(N node) {\n    if (!((edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH))) {\n      return ImmutableSet.of();\n    } else {\n      return graph.predecessors(node);\n    }\n  }\n\n  /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */\n  private Set<N> successorsOrEmpty(N node) {\n    if (!((edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH))) {\n      return ImmutableSet.of();\n    } else {\n      return graph.successors(node);\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "8ed6fb2a419ad4d8790355837dee89663377cf5fd2afd7f33733d8d8fa2dfa17", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "invert-conditions", "level": 6, "line_count": 93, "local_path": "expressions/invert-conditions/I06__google-guava__IncidentEdgeSet__d93d1385.java", "order": 6, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 6}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-c144d93d1385-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 511, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-823abd13797e-I07", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> graph, N node, EdgeType edgeType) {\nif (((0x6665 ^ 0x6665) != 0)) { throw new AssertionError(); }\n\n    this.graph = graph;\n    this.node = node;\n    this.edgeType = edgeType;\n  }\n\n  @Override\n  public boolean remove(@Nullable Object o) {\nif (((0x45D9 ^ 0x45D9) != 0)) { throw new AssertionError(); }\n\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int size() {\nif (((0x174A ^ 0x174A) != 0)) { throw new AssertionError(); }\n\n    if (graph.isDirected()) {\n      return predecessorsOrEmpty(node).size()\n          + successorsOrEmpty(node).size()\n          - (edgeType == EdgeType.BOTH && predecessorsOrEmpty(node).contains(node) ? 1 : 0);\n    } else {\n      return graph.adjacentNodes(node).size();\n    }\n  }\n\n  @Override\n  public boolean contains(@Nullable Object obj) {\nif (((0xDA5B ^ 0xDA5B) != 0)) { throw new AssertionError(); }\n\n    if (!(obj instanceof EndpointPair)) {\n      return false;\n    }\n    EndpointPair<?> endpointPair = (EndpointPair<?>) obj;\n\n    if (graph.isDirected() != endpointPair.isOrdered()) {\n      return false;\n    }\n\n    if (graph.isDirected()) {\n      Object source = endpointPair.source();\n      Object target = endpointPair.target();\n      return (node.equals(source) && successorsOrEmpty(node).contains(target))\n          || (node.equals(target) && predecessorsOrEmpty(node).contains(source));\n    } else {\n      Set<N> adjacent = graph.adjacentNodes(node);\n      Object nodeU = endpointPair.nodeU();\n      Object nodeV = endpointPair.nodeV();\n\n      return (node.equals(nodeV) && adjacent.contains(nodeU))\n          || (node.equals(nodeU) && adjacent.contains(nodeV));\n    }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> predecessorsOrEmpty(N node) {\nif (((0x6424 ^ 0x6424) != 0)) { throw new AssertionError(); }\n\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n\n  /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */\n  private Set<N> successorsOrEmpty(N node) {\nif (((0xA5BB ^ 0xA5BB) != 0)) { throw new AssertionError(); }\n\n    if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5283fa0b5f4dcc7be688833b9cf89f92b357e529273fc8810c8c6fb13f48e8df", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "insert-dead-branches", "level": 7, "line_count": 105, "local_path": "code-injection/insert-dead-branches/I07__google-guava__IncidentEdgeSet__bd13797e.java", "order": 7, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 6}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-823abd13797e-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 512, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9a1a347e35e0-I08", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> graph, N node, EdgeType edgeType) {\n    this.graph = graph;\n    this.node = node;\n    this.edgeType = edgeType;\n  }\n\n  @Override\n  public boolean remove(@Nullable Object o) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int size() {\n{\n  int morningTemperature = 18;\n  int eveningTemperature = 14;\n  int lowerTemperature = morningTemperature;\n  if (eveningTemperature < lowerTemperature) {\n    lowerTemperature = eveningTemperature;\n  }\n}\n\n    if (graph.isDirected()) {\n      return predecessorsOrEmpty(node).size()\n          + successorsOrEmpty(node).size()\n          - (edgeType == EdgeType.BOTH && predecessorsOrEmpty(node).contains(node) ? 1 : 0);\n    } else {\n      return graph.adjacentNodes(node).size();\n    }\n  }\n\n  @Override\n  public boolean contains(@Nullable Object obj) {\n    if (!(obj instanceof EndpointPair)) {\n      return false;\n    }\n    EndpointPair<?> endpointPair = (EndpointPair<?>) obj;\n\n    if (graph.isDirected() != endpointPair.isOrdered()) {\n      return false;\n    }\n\n    if (graph.isDirected()) {\n      Object source = endpointPair.source();\n      Object target = endpointPair.target();\n      return (node.equals(source) && successorsOrEmpty(node).contains(target))\n          || (node.equals(target) && predecessorsOrEmpty(node).contains(source));\n    } else {\n      Set<N> adjacent = graph.adjacentNodes(node);\n      Object nodeU = endpointPair.nodeU();\n      Object nodeV = endpointPair.nodeV();\n\n      return (node.equals(nodeV) && adjacent.contains(nodeU))\n          || (node.equals(nodeU) && adjacent.contains(nodeV));\n    }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> predecessorsOrEmpty(N node) {\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n\n  /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */\n  private Set<N> successorsOrEmpty(N node) {\n    if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d3f4bcc3f038b149bb3f570e964c7dd73b2b377c5f244fbec9f3e39779c6b369", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 102, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__IncidentEdgeSet__347e35e0.java", "order": 8, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 4}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-9a1a347e35e0-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 513, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-000396f9a409-I09", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> graph, N node, EdgeType edgeType) {\n    this.graph = graph;\n    this.node = node;\n    this.edgeType = edgeType;\n  }\n\n  @Override\n  public boolean remove(@Nullable Object o) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int size() {\n    if (graph.isDirected()) {\n      return predecessorsOrEmpty(node).size()\n          + successorsOrEmpty(node).size()\n          - (edgeType == EdgeType.BOTH && predecessorsOrEmpty(node).contains(node) ? 1 : 0);\n    } else {\n      return graph.adjacentNodes(node).size();\n    }\n  }\n\n  @Override\n  public boolean contains(@Nullable Object obj) {\n    if (!(obj instanceof EndpointPair)) {\n      return false;\n    }\n    EndpointPair<?> endpointPair = (EndpointPair<?>) obj;\n\n    if (graph.isDirected() != endpointPair.isOrdered()) {\n      return false;\n    }\n\n    if (graph.isDirected()) {\n      Object source = endpointPair.source();\n      Object target = endpointPair.target();\n      return (node.equals(source) && successorsOrEmpty(node).contains(target))\n          || (node.equals(target) && predecessorsOrEmpty(node).contains(source));\n    } else {\n      Set<N> adjacent = graph.adjacentNodes(node);\n      Object nodeU = endpointPair.nodeU();\n      Object nodeV = endpointPair.nodeV();\n\n      return (node.equals(nodeV) && adjacent.contains(nodeU))\n          || (node.equals(nodeU) && adjacent.contains(nodeV));\n    }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> predecessorsOrEmpty(N node) {\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n\n  /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */\n  private Set<N> successorsOrEmpty(N node) {\n{int lI0O_14bdbbfc=0xEFCF;boolean lI0O_bbc1c64c=true;do{lI0O_14bdbbfc^=0xEFCF;lI0O_bbc1c64c=false;}while(lI0O_bbc1c64c);}\n\n    if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "35599252105ead0a39acd8ef221fd99bb431569471a471c641c1c2be967ca3fc", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 95, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__IncidentEdgeSet__96f9a409.java", "order": 9, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 7}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-000396f9a409-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 514, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-70dba251cb6f-I10", "source": "package com.google.common.graph; import com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set; import org.jspecify.annotations.Nullable; /**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */ abstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType { INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  } IncidentEdgeSet(ArchetypeGraph<N> graph, N node, EdgeType edgeType) { this.graph = graph;\n    this.node = node;\n    this.edgeType = edgeType;\n  }\n\n  @Override\n  public boolean remove(@Nullable Object o) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override public int size() { if (graph.isDirected()) {\n      return predecessorsOrEmpty(node).size() + successorsOrEmpty(node).size()\n          - (edgeType == EdgeType.BOTH && predecessorsOrEmpty(node).contains(node) ? 1 : 0);\n    } else {\n      return graph.adjacentNodes(node).size();\n    } }\n\n  @Override\n  public boolean contains(@Nullable Object obj) {\n    if (!(obj instanceof EndpointPair)) {\n      return false; } EndpointPair<?> endpointPair = (EndpointPair<?>) obj;\n\n    if (graph.isDirected() != endpointPair.isOrdered()) { return false;\n    }\n\n    if (graph.isDirected()) {\n      Object source = endpointPair.source();\n      Object target = endpointPair.target();\n      return (node.equals(source) && successorsOrEmpty(node).contains(target)) || (node.equals(target) && predecessorsOrEmpty(node).contains(source)); } else {\n      Set<N> adjacent = graph.adjacentNodes(node); Object nodeU = endpointPair.nodeU(); Object nodeV = endpointPair.nodeV();\n\n      return (node.equals(nodeV) && adjacent.contains(nodeU)) || (node.equals(nodeU) && adjacent.contains(nodeV)); }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> predecessorsOrEmpty(N node) {\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(node);\n    } else {\n      return ImmutableSet.of(); }\n  } /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */ private Set<N> successorsOrEmpty(N node) { if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(node); } else { return ImmutableSet.of();\n    } }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "c43407b140e30dad0d2cfe91735bbfa447837134951d75ae61c10e6cd45979a1", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "partially-compact-layout", "level": 10, "line_count": 63, "local_path": "layout/partially-compact-layout/I10__google-guava__IncidentEdgeSet__a251cb6f.java", "order": 10, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 69, "line_break_groups_removed": 27, "line_breaks_removed": 30, "whitespace_characters_removed": 109}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-70dba251cb6f-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 515, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-55e8c53bf6d4-I11", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> graph, N node, EdgeType edgeType) {\n    this.graph = graph;\n    this.node = node;\n    this.edgeType = edgeType;\n  }\n\n  @Override\n  public boolean remove(@Nullable Object o) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int size() {\n    if (graph.isDirected()) {\n      final int a = 2;\n      final int b = -1;\n      final int c = 1;\n      final int d = -1;\n      return predecessorsOrEmpty(node).size()\n          + successorsOrEmpty(node).size()\n          - (edgeType == EdgeType.BOTH && predecessorsOrEmpty(node).contains(node) ? (a + b) : (c + d));\n    } else {\n      return graph.adjacentNodes(node).size();\n    }\n  }\n\n  @Override\n  public boolean contains(@Nullable Object obj) {\n    if (!(obj instanceof EndpointPair)) {\n      return false;\n    }\n    EndpointPair<?> endpointPair = (EndpointPair<?>) obj;\n\n    if (graph.isDirected() != endpointPair.isOrdered()) {\n      return false;\n    }\n\n    if (graph.isDirected()) {\n      Object source = endpointPair.source();\n      Object target = endpointPair.target();\n      return (node.equals(source) && successorsOrEmpty(node).contains(target))\n          || (node.equals(target) && predecessorsOrEmpty(node).contains(source));\n    } else {\n      Set<N> adjacent = graph.adjacentNodes(node);\n      Object nodeU = endpointPair.nodeU();\n      Object nodeV = endpointPair.nodeV();\n\n      return (node.equals(nodeV) && adjacent.contains(nodeU))\n          || (node.equals(nodeU) && adjacent.contains(nodeV));\n    }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> predecessorsOrEmpty(N node) {\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n\n  /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */\n  private Set<N> successorsOrEmpty(N node) {\n    if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "9e5d02280923b1dbdf0368c18797162461e1719a903129e1c55159d192857ee0", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 97, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__IncidentEdgeSet__c53bf6d4.java", "order": 11, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 2, "intermediate_variables_introduced": 4, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-55e8c53bf6d4-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 516, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-caf4b3fa5b1f-I12", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> graph, N node, EdgeType edgeType) {\n    this.graph = graph;\n    this.node = node;\n    this.edgeType = edgeType;\n  }\n\n  @Override\n  public boolean remove(@Nullable Object o) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int size() {\n    if (graph.isDirected()) {\n      return predecessorsOrEmpty(node).size()\n          + successorsOrEmpty(node).size()\n          - (edgeType == EdgeType.BOTH && predecessorsOrEmpty(node).contains(node) ? 1 : 0);\n    } else {\n      return graph.adjacentNodes(node).size();\n    }\n  }\n\n  @Override\n  public boolean contains(@Nullable Object obj) {\n    if (!(obj instanceof EndpointPair)) {\n      return false;\n    }\n    EndpointPair<?> endpointPair = (EndpointPair<?>) obj;\n\n    if (graph.isDirected() != endpointPair.isOrdered()) {\n      return false;\n    }\n\n    if (graph.isDirected()) {\n      Object source = endpointPair.source();\n      Object target = endpointPair.target();\n      return (node.equals(source) && successorsOrEmpty(node).contains(target))\n          || (node.equals(target) && predecessorsOrEmpty(node).contains(source));\n    } else {\n      Set<N> adjacent = graph.adjacentNodes(node);\n      Object nodeU = endpointPair.nodeU();\n      Object nodeV = endpointPair.nodeV();\n\n      return (node.equals(nodeV) && adjacent.contains(nodeU))\n          || (node.equals(nodeU) && adjacent.contains(nodeV));\n    }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> predecessorsOrEmpty(N node) {\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n\n  /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */\n  private Set<N> successorsOrEmpty(N node) {\n    if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 93, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__IncidentEdgeSet__b3fa5b1f.java", "order": 12, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-caf4b3fa5b1f-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 517, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1d520c07ffae-I13", "source": "package com.google.common.graph;\nimport com.google.common.collect.ImmutableSet;\nimport java.util.AbstractSet;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Abstract base class for an incident edges set that allows different implementations of {@link\n * AbstractSet#iterator()}.\n */\nabstract class IncidentEdgeSet<N> extends AbstractSet<EndpointPair<N>> {\n  final N node;\n  final ArchetypeGraph<N> graph;\n  final EdgeType edgeType;\n\n  enum EdgeType {\n    INCOMING, // incoming incident edges only\n    OUTGOING, // outgoing incident edges only\n    BOTH // both incoming and outgoing incident edges\n  }\n\n  IncidentEdgeSet(ArchetypeGraph<N> graph, N node, EdgeType edgeType) {\n    this.graph = graph;\n    this.node = node;\n    this.edgeType = edgeType;\n  }\n\n  @Override\n  public boolean remove(@Nullable Object o) {\n    throw new UnsupportedOperationException();\n  }\n\n  @Override\n  public int size() {\n    if (graph.isDirected()) {\n      return predecessorsOrEmpty(node).size()\n          + successorsOrEmpty(node).size()\n          - (edgeType == EdgeType.BOTH && predecessorsOrEmpty(node).contains(node) ? 1 : 0);\n    } else {\n      return graph.adjacentNodes(node).size();\n    }\n  }\n\n  @Override\n  public boolean contains(@Nullable Object obj) {\n    if (!(obj instanceof EndpointPair)) {\n      return false;\n    }\n    EndpointPair<?> endpointPair = (EndpointPair<?>) obj;\n\n    if (graph.isDirected() != endpointPair.isOrdered()) {\n      return false;\n    }\n\n    if (graph.isDirected()) {\n      Object source = endpointPair.source();\n      Object target = endpointPair.target();\n      return (node.equals(source) && successorsOrEmpty(node).contains(target))\n          || (node.equals(target) && predecessorsOrEmpty(node).contains(source));\n    } else {\n      Set<N> adjacent = graph.adjacentNodes(node);\n      Object nodeU = endpointPair.nodeU();\n      Object nodeV = endpointPair.nodeV();\n\n      return (node.equals(nodeV) && adjacent.contains(nodeU))\n          || (node.equals(nodeU) && adjacent.contains(nodeV));\n    }\n  }\n\n  /**\n   * Returns the predecessors of the given node, or an empty set if this set does not represent\n   * incoming edges.\n   */\n  private Set<N> predecessorsOrEmpty(N node) {\n    if (edgeType == EdgeType.INCOMING || edgeType == EdgeType.BOTH) {\n      return graph.predecessors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n\n  /**\n   * Returns the successors of the given node, or an empty set if this set does not represent\n   * outgoing edges.\n   */\n  private Set<N> successorsOrEmpty(N node) {\n    if (edgeType == EdgeType.OUTGOING || edgeType == EdgeType.BOTH) {\n      return graph.successors(node);\n    } else {\n      return ImmutableSet.of();\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__IncidentEdgeSet__a7170204.java", "base_sample_id": "source-db62e283fc5794ed", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/IncidentEdgeSet.java", "interference": "lower-for-to-while", "level": 13, "line_count": 93, "local_path": "control-flow/lower-for-to-while/I13__google-guava__IncidentEdgeSet__0c07ffae.java", "order": 13, "original_content_sha256": "5b808576df292252dc9649ca32553192c3bd7abe32fed928b37bf8c30c04fd97", "parent_variant_id": "int-c1dca7170204-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/IncidentEdgeSet.java#L24-L110", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "IncidentEdgeSet", "variant_id": "int-1d520c07ffae-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 518, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-68339cdd2769-SRC", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */\ninterface NetworkConnections<N, E> {\n\n  Set<N> adjacentNodes();\n\n  Set<N> predecessors();\n\n  Set<N> successors();\n\n  Set<E> incidentEdges();\n\n  Set<E> inEdges();\n\n  Set<E> outEdges();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */\n  Set<E> edgesConnecting(N node);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N adjacentNode(E edge);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */\n  @CanIgnoreReturnValue\n  @Nullable N removeInEdge(E edge, boolean isSelfLoop);\n\n  /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue\n  N removeOutEdge(E edge);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void addInEdge(E edge, N node, boolean isSelfLoop);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */\n  void addOutEdge(E edge, N node);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": null, "level": 0, "line_count": 60, "local_path": "source-original/SRC__google-guava__NetworkConnections__9cdd2769.java", "order": 0, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-68339cdd2769-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 589, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f012459e6188-I01", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n\n\ninterface NetworkConnections<N, E> {\n\n  Set<N> adjacentNodes();\n\n  Set<N> predecessors();\n\n  Set<N> successors();\n\n  Set<E> incidentEdges();\n\n  Set<E> inEdges();\n\n  Set<E> outEdges();\n\n  \n\n\n\n  Set<E> edgesConnecting(N node);\n\n  \n\n\n\n\n  N adjacentNode(E edge);\n\n  \n\n\n\n\n  @CanIgnoreReturnValue\n  @Nullable N removeInEdge(E edge, boolean isSelfLoop);\n\n   \n  @CanIgnoreReturnValue\n  N removeOutEdge(E edge);\n\n  \n\n\n  void addInEdge(E edge, N node, boolean isSelfLoop);\n\n   \n  void addOutEdge(E edge, N node);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "66d98712aba5a154402e0677c2c9240b014f5c42e7b549cad8ce9a6fcb1a9fac", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "remove-comments", "level": 1, "line_count": 60, "local_path": "comments/remove-comments/I01__google-guava__NetworkConnections__459e6188.java", "order": 1, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1037, "comments_removed": 7}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-f012459e6188-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 590, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a90e37dd27c3-I02", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */\ninterface NetworkConnections<N, E> {\n\n  Set<N> adjacent();\n\n  Set<N> pre();\n\n  Set<N> suc();\n\n  Set<E> incident();\n\n  Set<E> in();\n\n  Set<E> out();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */\n  Set<E> edges(N nod);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N adjacent2(E edg);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */\n  @CanIgnoreReturnValue\n  @Nullable N remove(E edg2, boolean is);\n\n  /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue\n  N remove2(E edg3);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void add(E edg4, N nod2, boolean is2);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */\n  void add2(E edg5, N nod3);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "35ac6722b0ab9bffc15e5b4e65e89786419953cc33a8bbc3acb130d6b4567a31", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "shorten-identifiers", "level": 2, "line_count": 60, "local_path": "identifiers/shorten-identifiers/I02__google-guava__NetworkConnections__37dd27c3.java", "order": 2, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 10, "local_name_collisions_avoided": 7, "method_calls_renamed": 0, "method_declarations_renamed": 12, "method_name_collisions_avoided": 3, "method_name_groups": 12}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-a90e37dd27c3-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 591, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2cc3bda5593f-I03", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */\ninterface NetworkConnections<N, E> {\n\n  Set<N> validateCache();\n\n  Set<N> validateMode();\n\n  Set<N> sendBuffer();\n\n  Set<E> createAccount();\n\n  Set<E> refresh();\n\n  Set<E> saveMode();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */\n  Set<E> validateAccount(N mode);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N parseMessage(E flag);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */\n  @CanIgnoreReturnValue\n  @Nullable N buildAccount(E path, boolean cachedData);\n\n  /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue\n  N validateState(E size);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void reconcile(E data, N step, boolean nextClient);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */\n  void fetchOrder(E user, N item);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "8d691ae3d9aac1fdf30079dd4ddf3a3bbe12b7765f692b3cc66c78305bcfca89", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "mislead-identifiers", "level": 3, "line_count": 60, "local_path": "identifiers/mislead-identifiers/I03__google-guava__NetworkConnections__bda5593f.java", "order": 3, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 10, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 6, "local_exact_length_matches": 10, "local_random_pool_selections": 10, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 12, "method_exact_length_matches": 12, "method_name_groups": 12, "method_random_pool_selections": 12, "method_total_length_difference": 0}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-2cc3bda5593f-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 592, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f9ab76fe9ea0-I04", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */\ninterface NetworkConnections<N, E> {\n\n  Set<N> a();\n\n  Set<N> b();\n\n  Set<N> c();\n\n  Set<E> d();\n\n  Set<E> e();\n\n  Set<E> f();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */\n  Set<E> g(N a);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N h(E b);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */\n  @CanIgnoreReturnValue\n  @Nullable N i(E c, boolean d);\n\n  /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue\n  N j(E e);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void k(E f, N g, boolean h);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */\n  void l(E i, N j);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "6751d797f9055e1e8f441acb232c1211b1b3db50d18998e67d575a9d944a9e24", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "garble-identifiers", "level": 4, "line_count": 60, "local_path": "identifiers/garble-identifiers/I04__google-guava__NetworkConnections__76fe9ea0.java", "order": 4, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 10, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 12, "method_name_collisions_avoided": 0, "method_name_groups": 12}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-f9ab76fe9ea0-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 593, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5c54bf75c496-I05", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */\ninterface NetworkConnections<N, E> {\n\n  Set<N> adjacentNodes();\n\n  Set<N> predecessors();\n\n  Set<N> successors();\n\n  Set<E> incidentEdges();\n\n  Set<E> inEdges();\n\n  Set<E> outEdges();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */\n  Set<E> edgesConnecting(N node);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N adjacentNode(E edge);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */\n  @CanIgnoreReturnValue\n  @Nullable N removeInEdge(E edge, boolean isSelfLoop);\n\n  /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue\n  N removeOutEdge(E edge);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void addInEdge(E edge, N node, boolean isSelfLoop);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */\n  void addOutEdge(E edge, N node);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "encode-integer-literals", "level": 5, "line_count": 60, "local_path": "expressions/encode-integer-literals/I05__google-guava__NetworkConnections__bf75c496.java", "order": 5, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-5c54bf75c496-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 594, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7f47225fa8dc-I06", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */\ninterface NetworkConnections<N, E> {\n\n  Set<N> adjacentNodes();\n\n  Set<N> predecessors();\n\n  Set<N> successors();\n\n  Set<E> incidentEdges();\n\n  Set<E> inEdges();\n\n  Set<E> outEdges();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */\n  Set<E> edgesConnecting(N node);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N adjacentNode(E edge);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */\n  @CanIgnoreReturnValue\n  @Nullable N removeInEdge(E edge, boolean isSelfLoop);\n\n  /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue\n  N removeOutEdge(E edge);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void addInEdge(E edge, N node, boolean isSelfLoop);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */\n  void addOutEdge(E edge, N node);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "invert-conditions", "level": 6, "line_count": 60, "local_path": "expressions/invert-conditions/I06__google-guava__NetworkConnections__225fa8dc.java", "order": 6, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-7f47225fa8dc-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 595, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cf04cbdb255f-I07", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */\ninterface NetworkConnections<N, E> {\n\n  Set<N> adjacentNodes();\n\n  Set<N> predecessors();\n\n  Set<N> successors();\n\n  Set<E> incidentEdges();\n\n  Set<E> inEdges();\n\n  Set<E> outEdges();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */\n  Set<E> edgesConnecting(N node);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N adjacentNode(E edge);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */\n  @CanIgnoreReturnValue\n  @Nullable N removeInEdge(E edge, boolean isSelfLoop);\n\n  /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue\n  N removeOutEdge(E edge);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void addInEdge(E edge, N node, boolean isSelfLoop);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */\n  void addOutEdge(E edge, N node);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "insert-dead-branches", "level": 7, "line_count": 60, "local_path": "code-injection/insert-dead-branches/I07__google-guava__NetworkConnections__cbdb255f.java", "order": 7, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-cf04cbdb255f-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 596, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c8550674ef77-I08", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */\ninterface NetworkConnections<N, E> {\n\n  Set<N> adjacentNodes();\n\n  Set<N> predecessors();\n\n  Set<N> successors();\n\n  Set<E> incidentEdges();\n\n  Set<E> inEdges();\n\n  Set<E> outEdges();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */\n  Set<E> edgesConnecting(N node);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N adjacentNode(E edge);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */\n  @CanIgnoreReturnValue\n  @Nullable N removeInEdge(E edge, boolean isSelfLoop);\n\n  /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue\n  N removeOutEdge(E edge);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void addInEdge(E edge, N node, boolean isSelfLoop);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */\n  void addOutEdge(E edge, N node);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 60, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__NetworkConnections__0674ef77.java", "order": 8, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-c8550674ef77-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 597, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e023e571a15c-I09", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */\ninterface NetworkConnections<N, E> {\n\n  Set<N> adjacentNodes();\n\n  Set<N> predecessors();\n\n  Set<N> successors();\n\n  Set<E> incidentEdges();\n\n  Set<E> inEdges();\n\n  Set<E> outEdges();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */\n  Set<E> edgesConnecting(N node);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N adjacentNode(E edge);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */\n  @CanIgnoreReturnValue\n  @Nullable N removeInEdge(E edge, boolean isSelfLoop);\n\n  /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue\n  N removeOutEdge(E edge);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void addInEdge(E edge, N node, boolean isSelfLoop);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */\n  void addOutEdge(E edge, N node);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 60, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__NetworkConnections__e571a15c.java", "order": 9, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-e023e571a15c-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 598, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e979b25f6ce0-I10", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable; /**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */ interface NetworkConnections<N, E> {\n\n  Set<N> adjacentNodes();\n\n  Set<N> predecessors(); Set<N> successors();\n\n  Set<E> incidentEdges();\n\n  Set<E> inEdges();\n\n  Set<E> outEdges();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */ Set<E> edgesConnecting(N node);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N adjacentNode(E edge);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */ @CanIgnoreReturnValue @Nullable N removeInEdge(E edge, boolean isSelfLoop); /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue N removeOutEdge(E edge);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void addInEdge(E edge, N node, boolean isSelfLoop);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */ void addOutEdge(E edge, N node); }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "987476580a078fcc18261d2d00f6c2a9259ec7067f9ce9a0cfeb1e3cd8bcf8d0", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "partially-compact-layout", "level": 10, "line_count": 47, "local_path": "layout/partially-compact-layout/I10__google-guava__NetworkConnections__b25f6ce0.java", "order": 10, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 26, "line_break_groups_removed": 10, "line_breaks_removed": 13, "whitespace_characters_removed": 17}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-e979b25f6ce0-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 599, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9813716bfdc2-I11", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */\ninterface NetworkConnections<N, E> {\n\n  Set<N> adjacentNodes();\n\n  Set<N> predecessors();\n\n  Set<N> successors();\n\n  Set<E> incidentEdges();\n\n  Set<E> inEdges();\n\n  Set<E> outEdges();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */\n  Set<E> edgesConnecting(N node);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N adjacentNode(E edge);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */\n  @CanIgnoreReturnValue\n  @Nullable N removeInEdge(E edge, boolean isSelfLoop);\n\n  /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue\n  N removeOutEdge(E edge);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void addInEdge(E edge, N node, boolean isSelfLoop);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */\n  void addOutEdge(E edge, N node);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 60, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__NetworkConnections__716bfdc2.java", "order": 11, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-9813716bfdc2-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 600, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a6b5f86e5713-I12", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */\ninterface NetworkConnections<N, E> {\n\n  Set<N> adjacentNodes();\n\n  Set<N> predecessors();\n\n  Set<N> successors();\n\n  Set<E> incidentEdges();\n\n  Set<E> inEdges();\n\n  Set<E> outEdges();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */\n  Set<E> edgesConnecting(N node);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N adjacentNode(E edge);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */\n  @CanIgnoreReturnValue\n  @Nullable N removeInEdge(E edge, boolean isSelfLoop);\n\n  /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue\n  N removeOutEdge(E edge);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void addInEdge(E edge, N node, boolean isSelfLoop);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */\n  void addOutEdge(E edge, N node);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 60, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__NetworkConnections__f86e5713.java", "order": 12, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-a6b5f86e5713-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 601, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-244bd4834816-I13", "source": "package com.google.common.graph;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An interface for representing and manipulating an origin node's adjacent nodes and incident edges\n * in a {@link Network}.\n *\n * @author James Sexton\n * @param <N> Node parameter type\n * @param <E> Edge parameter type\n */\ninterface NetworkConnections<N, E> {\n\n  Set<N> adjacentNodes();\n\n  Set<N> predecessors();\n\n  Set<N> successors();\n\n  Set<E> incidentEdges();\n\n  Set<E> inEdges();\n\n  Set<E> outEdges();\n\n  /**\n   * Returns the set of edges connecting the origin node to {@code node}. For networks without\n   * parallel edges, this set cannot be of size greater than one.\n   */\n  Set<E> edgesConnecting(N node);\n\n  /**\n   * Returns the node that is adjacent to the origin node along {@code edge}.\n   *\n   * <p>In the directed case, {@code edge} is assumed to be an outgoing edge.\n   */\n  N adjacentNode(E edge);\n\n  /**\n   * Remove {@code edge} from the set of incoming edges. Returns the former predecessor node.\n   *\n   * <p>In the undirected case, returns {@code null} if {@code isSelfLoop} is true.\n   */\n  @CanIgnoreReturnValue\n  @Nullable N removeInEdge(E edge, boolean isSelfLoop);\n\n  /** Remove {@code edge} from the set of outgoing edges. Returns the former successor node. */\n  @CanIgnoreReturnValue\n  N removeOutEdge(E edge);\n\n  /**\n   * Add {@code edge} to the set of incoming edges. Implicitly adds {@code node} as a predecessor.\n   */\n  void addInEdge(E edge, N node, boolean isSelfLoop);\n\n  /** Add {@code edge} to the set of outgoing edges. Implicitly adds {@code node} as a successor. */\n  void addOutEdge(E edge, N node);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__NetworkConnections__9cdd2769.java", "base_sample_id": "source-711b795dbb6e670f", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/graph/NetworkConnections.java", "interference": "lower-for-to-while", "level": 13, "line_count": 60, "local_path": "control-flow/lower-for-to-while/I13__google-guava__NetworkConnections__d4834816.java", "order": 13, "original_content_sha256": "89d4438d6c32974bcad8ccb240be88db7026ef50e00f5c84fc47d605590cdffd", "parent_variant_id": "int-68339cdd2769-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/graph/NetworkConnections.java#L23-L77", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "NetworkConnections", "variant_id": "int-244bd4834816-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 602, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-218fb39999a3-SRC", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String algorithmName, String toString) {\n    this.prototype = getMessageDigest(algorithmName);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(toString);\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  MessageDigestHashFunction(String algorithmName, int bytes, String toString) {\n    this.toString = checkNotNull(toString);\n    this.prototype = getMessageDigest(algorithmName);\n    int maxLength = prototype.getDigestLength();\n    checkArgument(\n        bytes >= 4 && bytes <= maxLength, \"bytes (%s) must be >= 4 and < %s\", bytes, maxLength);\n    this.bytes = bytes;\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  private static boolean supportsClone(MessageDigest digest) {\n    try {\n      Object unused = digest.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    }\n  }\n\n  @Override\n  public int bits() {\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String toString() {\n    return toString;\n  }\n\n  private static MessageDigest getMessageDigest(String algorithmName) {\n    try {\n      return MessageDigest.getInstance(algorithmName);\n    } catch (NoSuchAlgorithmException e) {\n      throw new AssertionError(e);\n    }\n  }\n\n  @Override\n  public Hasher newHasher() {\n    if (supportsClone) {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) {\n        // falls through\n      }\n    }\n    return new MessageDigestHasher(getMessageDigest(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String algorithmName, int bytes, String toString) {\n      this.algorithmName = algorithmName;\n      this.bytes = bytes;\n      this.toString = toString;\n    }\n\n    private Object readResolve() {\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0;\n  }\n\n  Object writeReplace() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void readObject(ObjectInputStream stream) throws InvalidObjectException {\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest digest, int bytes) {\n      this.digest = digest;\n      this.bytes = bytes;\n    }\n\n    @Override\n    protected void update(byte b) {\n      checkNotDone();\n      digest.update(b);\n    }\n\n    @Override\n    protected void update(byte[] b, int off, int len) {\n      checkNotDone();\n      digest.update(b, off, len);\n    }\n\n    @Override\n    protected void update(ByteBuffer bytes) {\n      checkNotDone();\n      digest.update(bytes);\n    }\n\n    private void checkNotDone() {\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode hash() {\n      checkNotDone();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": null, "level": 0, "line_count": 154, "local_path": "source-original/SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "order": 0, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-218fb39999a3-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 561, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0009184604d4-I01", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n\n\n\n\n\n\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\")  \n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String algorithmName, String toString) {\n    this.prototype = getMessageDigest(algorithmName);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(toString);\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  MessageDigestHashFunction(String algorithmName, int bytes, String toString) {\n    this.toString = checkNotNull(toString);\n    this.prototype = getMessageDigest(algorithmName);\n    int maxLength = prototype.getDigestLength();\n    checkArgument(\n        bytes >= 4 && bytes <= maxLength, \"bytes (%s) must be >= 4 and < %s\", bytes, maxLength);\n    this.bytes = bytes;\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  private static boolean supportsClone(MessageDigest digest) {\n    try {\n      Object unused = digest.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    }\n  }\n\n  @Override\n  public int bits() {\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String toString() {\n    return toString;\n  }\n\n  private static MessageDigest getMessageDigest(String algorithmName) {\n    try {\n      return MessageDigest.getInstance(algorithmName);\n    } catch (NoSuchAlgorithmException e) {\n      throw new AssertionError(e);\n    }\n  }\n\n  @Override\n  public Hasher newHasher() {\n    if (supportsClone) {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) {\n         \n      }\n    }\n    return new MessageDigestHasher(getMessageDigest(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String algorithmName, int bytes, String toString) {\n      this.algorithmName = algorithmName;\n      this.bytes = bytes;\n      this.toString = toString;\n    }\n\n    private Object readResolve() {\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0;\n  }\n\n  Object writeReplace() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void readObject(ObjectInputStream stream) throws InvalidObjectException {\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n   \n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest digest, int bytes) {\n      this.digest = digest;\n      this.bytes = bytes;\n    }\n\n    @Override\n    protected void update(byte b) {\n      checkNotDone();\n      digest.update(b);\n    }\n\n    @Override\n    protected void update(byte[] b, int off, int len) {\n      checkNotDone();\n      digest.update(b, off, len);\n    }\n\n    @Override\n    protected void update(ByteBuffer bytes) {\n      checkNotDone();\n      digest.update(bytes);\n    }\n\n    private void checkNotDone() {\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode hash() {\n      checkNotDone();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "c84a0d86da170e14d9444609dd6f92b1d6a0d973bdf48b3413d233b3127f6888", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "remove-comments", "level": 1, "line_count": 154, "local_path": "comments/remove-comments/I01__google-guava__MessageDigestHashFunction__184604d4.java", "order": 1, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 213, "comments_removed": 4}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-0009184604d4-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 562, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-233ae632a1de-I02", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String algorithm, String to) {\n    this.prototype = get(algorithm);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(to);\n    this.supportsClone = supports(prototype);\n  }\n\n  MessageDigestHashFunction(String algorithm2, int byt, String to2) {\n    this.toString = checkNotNull(to2);\n    this.prototype = get(algorithm2);\n    int max = prototype.getDigestLength();\n    checkArgument(\n        byt >= 4 && byt <= max, \"bytes (%s) must be >= 4 and < %s\", byt, max);\n    this.bytes = byt;\n    this.supportsClone = supports(prototype);\n  }\n\n  private static boolean supports(MessageDigest dig) {\n    try {\n      Object unu = dig.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    }\n  }\n\n  @Override\n  public int bit() {\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String to() {\n    return toString;\n  }\n\n  private static MessageDigest get(String algorithm3) {\n    try {\n      return MessageDigest.getInstance(algorithm3);\n    } catch (NoSuchAlgorithmException e) {\n      throw new AssertionError(e);\n    }\n  }\n\n  @Override\n  public Hasher new2() {\n    if (supportsClone) {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) {\n        // falls through\n      }\n    }\n    return new MessageDigestHasher(get(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String algorithm4, int byt2, String to3) {\n      this.algorithmName = algorithm4;\n      this.bytes = byt2;\n      this.toString = to3;\n    }\n\n    private Object read() {\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0;\n  }\n\n  Object write() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void read(ObjectInputStream str) throws InvalidObjectException {\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest dig2, int byt3) {\n      this.digest = dig2;\n      this.bytes = byt3;\n    }\n\n    @Override\n    protected void upd(byte b) {\n      check();\n      digest.update(b);\n    }\n\n    @Override\n    protected void upd(byte[] b, int off, int len) {\n      check();\n      digest.update(b, off, len);\n    }\n\n    @Override\n    protected void upd(ByteBuffer byt4) {\n      check();\n      digest.update(byt4);\n    }\n\n    private void check() {\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode has() {\n      check();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7ba4f69bd74448ec563e304dedcf201a45db934d51afe25c381f23ac96a97d58", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "shorten-identifiers", "level": 2, "line_count": 154, "local_path": "identifiers/shorten-identifiers/I02__google-guava__MessageDigestHashFunction__e632a1de.java", "order": 2, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 23, "identifiers_declared": 23, "local_name_collisions_avoided": 9, "method_calls_renamed": 9, "method_declarations_renamed": 13, "method_name_collisions_avoided": 1, "method_name_groups": 11}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-233ae632a1de-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 563, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f2003f9b947a-I03", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String defaultConfig, String nextUser) {\n    this.prototype = validateMessage(defaultConfig);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(nextUser);\n    this.supportsClone = refreshWindow(prototype);\n  }\n\n  MessageDigestHashFunction(String backupMessage, int cache, String schedule) {\n    this.toString = checkNotNull(schedule);\n    this.prototype = validateMessage(backupMessage);\n    int timestamp = prototype.getDigestLength();\n    checkArgument(\n        cache >= 4 && cache <= timestamp, \"bytes (%s) must be >= 4 and < %s\", cache, timestamp);\n    this.bytes = cache;\n    this.supportsClone = refreshWindow(prototype);\n  }\n\n  private static boolean refreshWindow(MessageDigest region) {\n    try {\n      Object window = region.clone();\n      return true;\n    } catch (CloneNotSupportedException key) {\n      return false;\n    }\n  }\n\n  @Override\n  public int sync() {\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String saveItem() {\n    return toString;\n  }\n\n  private static MessageDigest validateMessage(String currentStatus) {\n    try {\n      return MessageDigest.getInstance(currentStatus);\n    } catch (NoSuchAlgorithmException map) {\n      throw new AssertionError(map);\n    }\n  }\n\n  @Override\n  public Hasher readBatch() {\n    if (supportsClone) {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException age) {\n        // falls through\n      }\n    }\n    return new MessageDigestHasher(validateMessage(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String sharedRequest, int batch, String nextData) {\n      this.algorithmName = sharedRequest;\n      this.bytes = batch;\n      this.toString = nextData;\n    }\n\n    private Object createBatch() {\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0;\n  }\n\n  Object buildAccount() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void sendClient(ObjectInputStream source) throws InvalidObjectException {\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest config, int count) {\n      this.digest = config;\n      this.bytes = count;\n    }\n\n    @Override\n    protected void delete(byte path) {\n      refreshState();\n      digest.update(path);\n    }\n\n    @Override\n    protected void delete(byte[] step, int size, int item) {\n      refreshState();\n      digest.update(step, size, item);\n    }\n\n    @Override\n    protected void delete(ByteBuffer state) {\n      refreshState();\n      digest.update(state);\n    }\n\n    private void refreshState() {\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode send() {\n      refreshState();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "2d220108fd0fed973fe7ad464133228e09699ff018214f46f1638a3b639b2f7c", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "mislead-identifiers", "level": 3, "line_count": 154, "local_path": "identifiers/mislead-identifiers/I03__google-guava__MessageDigestHashFunction__3f9b947a.java", "order": 3, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 23, "identifiers_declared": 23, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 14, "local_exact_length_matches": 16, "local_random_pool_selections": 23, "local_total_length_difference": 14, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 9, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 13, "method_exact_length_matches": 10, "method_name_groups": 11, "method_random_pool_selections": 11, "method_total_length_difference": 1}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-f2003f9b947a-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 564, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-35cb80d3166e-I04", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String a, String c) {\n    this.prototype = d(a);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(c);\n    this.supportsClone = a(prototype);\n  }\n\n  MessageDigestHashFunction(String d, int f, String g) {\n    this.toString = checkNotNull(g);\n    this.prototype = d(d);\n    int h = prototype.getDigestLength();\n    checkArgument(\n        f >= 4 && f <= h, \"bytes (%s) must be >= 4 and < %s\", f, h);\n    this.bytes = f;\n    this.supportsClone = a(prototype);\n  }\n\n  private static boolean a(MessageDigest i) {\n    try {\n      Object j = i.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    }\n  }\n\n  @Override\n  public int b() {\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String c() {\n    return toString;\n  }\n\n  private static MessageDigest d(String k) {\n    try {\n      return MessageDigest.getInstance(k);\n    } catch (NoSuchAlgorithmException e) {\n      throw new AssertionError(e);\n    }\n  }\n\n  @Override\n  public Hasher e() {\n    if (supportsClone) {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) {\n        // falls through\n      }\n    }\n    return new MessageDigestHasher(d(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String l, int m, String n) {\n      this.algorithmName = l;\n      this.bytes = m;\n      this.toString = n;\n    }\n\n    private Object a() {\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0;\n  }\n\n  Object f() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void g(ObjectInputStream o) throws InvalidObjectException {\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest p, int q) {\n      this.digest = p;\n      this.bytes = q;\n    }\n\n    @Override\n    protected void a(byte b) {\n      b();\n      digest.update(b);\n    }\n\n    @Override\n    protected void a(byte[] b, int r, int s) {\n      b();\n      digest.update(b, r, s);\n    }\n\n    @Override\n    protected void a(ByteBuffer t) {\n      b();\n      digest.update(t);\n    }\n\n    private void b() {\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode c() {\n      b();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "6f3c6c2769febe8347ff232cf09d6b7f050829d39faffc4e5748bba78987e2a4", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "garble-identifiers", "level": 4, "line_count": 154, "local_path": "identifiers/garble-identifiers/I04__google-guava__MessageDigestHashFunction__80d3166e.java", "order": 4, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 23, "identifiers_declared": 23, "local_name_collisions_avoided": 0, "method_calls_renamed": 9, "method_declarations_renamed": 13, "method_name_collisions_avoided": 0, "method_name_groups": 11}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-35cb80d3166e-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 565, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d1d7b072eeb3-I05", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String algorithmName, String toString) {\n    this.prototype = getMessageDigest(algorithmName);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(toString);\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  MessageDigestHashFunction(String algorithmName, int bytes, String toString) {\n    this.toString = checkNotNull(toString);\n    this.prototype = getMessageDigest(algorithmName);\n    int maxLength = prototype.getDigestLength();\n    checkArgument(\n        bytes >= 0x4 && bytes <= maxLength, \"bytes (%s) must be >= 4 and < %s\", bytes, maxLength);\n    this.bytes = bytes;\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  private static boolean supportsClone(MessageDigest digest) {\n    try {\n      Object unused = digest.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    }\n  }\n\n  @Override\n  public int bits() {\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String toString() {\n    return toString;\n  }\n\n  private static MessageDigest getMessageDigest(String algorithmName) {\n    try {\n      return MessageDigest.getInstance(algorithmName);\n    } catch (NoSuchAlgorithmException e) {\n      throw new AssertionError(e);\n    }\n  }\n\n  @Override\n  public Hasher newHasher() {\n    if (supportsClone) {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) {\n        // falls through\n      }\n    }\n    return new MessageDigestHasher(getMessageDigest(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String algorithmName, int bytes, String toString) {\n      this.algorithmName = algorithmName;\n      this.bytes = bytes;\n      this.toString = toString;\n    }\n\n    private Object readResolve() {\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0x0;\n  }\n\n  Object writeReplace() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void readObject(ObjectInputStream stream) throws InvalidObjectException {\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest digest, int bytes) {\n      this.digest = digest;\n      this.bytes = bytes;\n    }\n\n    @Override\n    protected void update(byte b) {\n      checkNotDone();\n      digest.update(b);\n    }\n\n    @Override\n    protected void update(byte[] b, int off, int len) {\n      checkNotDone();\n      digest.update(b, off, len);\n    }\n\n    @Override\n    protected void update(ByteBuffer bytes) {\n      checkNotDone();\n      digest.update(bytes);\n    }\n\n    private void checkNotDone() {\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode hash() {\n      checkNotDone();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "c7d2e99891f9d2a0bee7410df13f8a37a786138de24b513bb9554c8716c131d6", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "encode-integer-literals", "level": 5, "line_count": 154, "local_path": "expressions/encode-integer-literals/I05__google-guava__MessageDigestHashFunction__b072eeb3.java", "order": 5, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 2}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-d1d7b072eeb3-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 566, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b53c49324e5d-I06", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String algorithmName, String toString) {\n    this.prototype = getMessageDigest(algorithmName);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(toString);\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  MessageDigestHashFunction(String algorithmName, int bytes, String toString) {\n    this.toString = checkNotNull(toString);\n    this.prototype = getMessageDigest(algorithmName);\n    int maxLength = prototype.getDigestLength();\n    checkArgument(\n        bytes >= 4 && bytes <= maxLength, \"bytes (%s) must be >= 4 and < %s\", bytes, maxLength);\n    this.bytes = bytes;\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  private static boolean supportsClone(MessageDigest digest) {\n    try {\n      Object unused = digest.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    }\n  }\n\n  @Override\n  public int bits() {\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String toString() {\n    return toString;\n  }\n\n  private static MessageDigest getMessageDigest(String algorithmName) {\n    try {\n      return MessageDigest.getInstance(algorithmName);\n    } catch (NoSuchAlgorithmException e) {\n      throw new AssertionError(e);\n    }\n  }\n\n  @Override\n  public Hasher newHasher() {\n    if (!((supportsClone))) {} else {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) {\n        // falls through\n      }\n    }\n    return new MessageDigestHasher(getMessageDigest(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String algorithmName, int bytes, String toString) {\n      this.algorithmName = algorithmName;\n      this.bytes = bytes;\n      this.toString = toString;\n    }\n\n    private Object readResolve() {\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0;\n  }\n\n  Object writeReplace() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void readObject(ObjectInputStream stream) throws InvalidObjectException {\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest digest, int bytes) {\n      this.digest = digest;\n      this.bytes = bytes;\n    }\n\n    @Override\n    protected void update(byte b) {\n      checkNotDone();\n      digest.update(b);\n    }\n\n    @Override\n    protected void update(byte[] b, int off, int len) {\n      checkNotDone();\n      digest.update(b, off, len);\n    }\n\n    @Override\n    protected void update(ByteBuffer bytes) {\n      checkNotDone();\n      digest.update(bytes);\n    }\n\n    private void checkNotDone() {\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode hash() {\n      checkNotDone();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "498d0d65b142c98619e582f5559af7cd5be5edb8e6be570589b836065af885f5", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "invert-conditions", "level": 6, "line_count": 154, "local_path": "expressions/invert-conditions/I06__google-guava__MessageDigestHashFunction__49324e5d.java", "order": 6, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-b53c49324e5d-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 567, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3ccbcf831469-I07", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String algorithmName, String toString) {\nif (((0xC977 ^ 0xC977) != 0)) { throw new AssertionError(); }\n\n    this.prototype = getMessageDigest(algorithmName);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(toString);\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  MessageDigestHashFunction(String algorithmName, int bytes, String toString) {\nif (((0x2AC ^ 0x2AC) != 0)) { throw new AssertionError(); }\n\n    this.toString = checkNotNull(toString);\n    this.prototype = getMessageDigest(algorithmName);\n    int maxLength = prototype.getDigestLength();\n    checkArgument(\n        bytes >= 4 && bytes <= maxLength, \"bytes (%s) must be >= 4 and < %s\", bytes, maxLength);\n    this.bytes = bytes;\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  private static boolean supportsClone(MessageDigest digest) {\nif (((0xB56F ^ 0xB56F) != 0)) { throw new AssertionError(); }\n\n    try {\n      Object unused = digest.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    }\n  }\n\n  @Override\n  public int bits() {\nif (((0xABE0 ^ 0xABE0) != 0)) { throw new AssertionError(); }\n\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String toString() {\nif (((0x4927 ^ 0x4927) != 0)) { throw new AssertionError(); }\n\n    return toString;\n  }\n\n  private static MessageDigest getMessageDigest(String algorithmName) {\nif (((0x48F8 ^ 0x48F8) != 0)) { throw new AssertionError(); }\n\n    try {\n      return MessageDigest.getInstance(algorithmName);\n    } catch (NoSuchAlgorithmException e) {\n      throw new AssertionError(e);\n    }\n  }\n\n  @Override\n  public Hasher newHasher() {\nif (((0xE5FD ^ 0xE5FD) != 0)) { throw new AssertionError(); }\n\n    if (supportsClone) {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) {\n        // falls through\n      }\n    }\n    return new MessageDigestHasher(getMessageDigest(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String algorithmName, int bytes, String toString) {\nif (((0x2D7 ^ 0x2D7) != 0)) { throw new AssertionError(); }\n\n      this.algorithmName = algorithmName;\n      this.bytes = bytes;\n      this.toString = toString;\n    }\n\n    private Object readResolve() {\nif (((0x14E5 ^ 0x14E5) != 0)) { throw new AssertionError(); }\n\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0;\n  }\n\n  Object writeReplace() {\nif (((0x4072 ^ 0x4072) != 0)) { throw new AssertionError(); }\n\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void readObject(ObjectInputStream stream) throws InvalidObjectException {\nif (((0xF9C7 ^ 0xF9C7) != 0)) { throw new AssertionError(); }\n\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest digest, int bytes) {\nif (((0xC8FF ^ 0xC8FF) != 0)) { throw new AssertionError(); }\n\n      this.digest = digest;\n      this.bytes = bytes;\n    }\n\n    @Override\n    protected void update(byte b) {\nif (((0xBD6C ^ 0xBD6C) != 0)) { throw new AssertionError(); }\n\n      checkNotDone();\n      digest.update(b);\n    }\n\n    @Override\n    protected void update(byte[] b, int off, int len) {\nif (((0xBB91 ^ 0xBB91) != 0)) { throw new AssertionError(); }\n\n      checkNotDone();\n      digest.update(b, off, len);\n    }\n\n    @Override\n    protected void update(ByteBuffer bytes) {\nif (((0xD5AA ^ 0xD5AA) != 0)) { throw new AssertionError(); }\n\n      checkNotDone();\n      digest.update(bytes);\n    }\n\n    private void checkNotDone() {\nif (((0xFBEA ^ 0xFBEA) != 0)) { throw new AssertionError(); }\n\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode hash() {\nif (((0x677C ^ 0x677C) != 0)) { throw new AssertionError(); }\n\n      checkNotDone();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "bb210e7cce8218931b274dc85b34a6db1bda4a9d740905fa60231138d02dc08c", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "insert-dead-branches", "level": 7, "line_count": 188, "local_path": "code-injection/insert-dead-branches/I07__google-guava__MessageDigestHashFunction__cf831469.java", "order": 7, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 17}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-3ccbcf831469-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 568, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6178de3d61c1-I08", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String algorithmName, String toString) {\n    this.prototype = getMessageDigest(algorithmName);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(toString);\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  MessageDigestHashFunction(String algorithmName, int bytes, String toString) {\n    this.toString = checkNotNull(toString);\n    this.prototype = getMessageDigest(algorithmName);\n    int maxLength = prototype.getDigestLength();\n    checkArgument(\n        bytes >= 4 && bytes <= maxLength, \"bytes (%s) must be >= 4 and < %s\", bytes, maxLength);\n    this.bytes = bytes;\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  private static boolean supportsClone(MessageDigest digest) {\n    try {\n      Object unused = digest.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    }\n  }\n\n  @Override\n  public int bits() {\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String toString() {\n    return toString;\n  }\n\n  private static MessageDigest getMessageDigest(String algorithmName) {\n    try {\n      return MessageDigest.getInstance(algorithmName);\n    } catch (NoSuchAlgorithmException e) {\n      throw new AssertionError(e);\n    }\n  }\n\n  @Override\n  public Hasher newHasher() {\n    if (supportsClone) {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) {\n        // falls through\n      }\n    }\n    return new MessageDigestHasher(getMessageDigest(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String algorithmName, int bytes, String toString) {\n      this.algorithmName = algorithmName;\n      this.bytes = bytes;\n      this.toString = toString;\n    }\n\n    private Object readResolve() {\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0;\n  }\n\n  Object writeReplace() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void readObject(ObjectInputStream stream) throws InvalidObjectException {\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest digest, int bytes) {\n{\n  int runningTotal = 0;\n  for (int currentNumber = 1; currentNumber <= 5; currentNumber++) {\n    runningTotal += currentNumber;\n  }\n}\n\n      this.digest = digest;\n      this.bytes = bytes;\n    }\n\n    @Override\n    protected void update(byte b) {\n      checkNotDone();\n      digest.update(b);\n    }\n\n    @Override\n    protected void update(byte[] b, int off, int len) {\n      checkNotDone();\n      digest.update(b, off, len);\n    }\n\n    @Override\n    protected void update(ByteBuffer bytes) {\n      checkNotDone();\n      digest.update(bytes);\n    }\n\n    private void checkNotDone() {\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode hash() {\n      checkNotDone();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "32689f0f2c829f32e51ce9ab0aa30981993ca377e39b2b957d9205acb887846f", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 161, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__MessageDigestHashFunction__de3d61c1.java", "order": 8, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 0}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-6178de3d61c1-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 569, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-46e51655049e-I09", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String algorithmName, String toString) {\n    this.prototype = getMessageDigest(algorithmName);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(toString);\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  MessageDigestHashFunction(String algorithmName, int bytes, String toString) {\n    this.toString = checkNotNull(toString);\n    this.prototype = getMessageDigest(algorithmName);\n    int maxLength = prototype.getDigestLength();\n    checkArgument(\n        bytes >= 4 && bytes <= maxLength, \"bytes (%s) must be >= 4 and < %s\", bytes, maxLength);\n    this.bytes = bytes;\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  private static boolean supportsClone(MessageDigest digest) {\n    try {\n      Object unused = digest.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    }\n  }\n\n  @Override\n  public int bits() {\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String toString() {\n    return toString;\n  }\n\n  private static MessageDigest getMessageDigest(String algorithmName) {\n    try {\n      return MessageDigest.getInstance(algorithmName);\n    } catch (NoSuchAlgorithmException e) {\n      throw new AssertionError(e);\n    }\n  }\n\n  @Override\n  public Hasher newHasher() {\n    if (supportsClone) {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) {\n        // falls through\n      }\n    }\n    return new MessageDigestHasher(getMessageDigest(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String algorithmName, int bytes, String toString) {\n      this.algorithmName = algorithmName;\n      this.bytes = bytes;\n      this.toString = toString;\n    }\n\n    private Object readResolve() {\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0;\n  }\n\n  Object writeReplace() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void readObject(ObjectInputStream stream) throws InvalidObjectException {\n{int lI0O_5b9e02ee=0xB146;lI0O_5b9e02ee=((lI0O_5b9e02ee^0xB146)|0)&-1;if(((lI0O_5b9e02ee&1)==1)){lI0O_5b9e02ee^=lI0O_5b9e02ee;}}\n\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest digest, int bytes) {\n      this.digest = digest;\n      this.bytes = bytes;\n    }\n\n    @Override\n    protected void update(byte b) {\n      checkNotDone();\n      digest.update(b);\n    }\n\n    @Override\n    protected void update(byte[] b, int off, int len) {\n      checkNotDone();\n      digest.update(b, off, len);\n    }\n\n    @Override\n    protected void update(ByteBuffer bytes) {\n      checkNotDone();\n      digest.update(bytes);\n    }\n\n    private void checkNotDone() {\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode hash() {\n      checkNotDone();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "62315e2806370712867741bfdbdcb1f57339be9c4bba9931571891aa97b3d00d", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 156, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__MessageDigestHashFunction__1655049e.java", "order": 9, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-46e51655049e-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 570, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b7e1492f9055-I10", "source": "package com.google.common.hash; import static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import com.google.errorprone.annotations.Immutable; import java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable; import java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */ @Immutable final class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes; private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String algorithmName, String toString) { this.prototype = getMessageDigest(algorithmName); this.bytes = prototype.getDigestLength(); this.toString = checkNotNull(toString);\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  MessageDigestHashFunction(String algorithmName, int bytes, String toString) {\n    this.toString = checkNotNull(toString);\n    this.prototype = getMessageDigest(algorithmName); int maxLength = prototype.getDigestLength(); checkArgument(\n        bytes >= 4 && bytes <= maxLength, \"bytes (%s) must be >= 4 and < %s\", bytes, maxLength);\n    this.bytes = bytes;\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  private static boolean supportsClone(MessageDigest digest) { try {\n      Object unused = digest.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    } }\n\n  @Override\n  public int bits() { return bytes * Byte.SIZE; } @Override\n  public String toString() {\n    return toString;\n  }\n\n  private static MessageDigest getMessageDigest(String algorithmName) {\n    try { return MessageDigest.getInstance(algorithmName); } catch (NoSuchAlgorithmException e) { throw new AssertionError(e);\n    }\n  } @Override public Hasher newHasher() { if (supportsClone) { try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) { // falls through\n      } } return new MessageDigestHasher(getMessageDigest(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable { private final String algorithmName;\n    private final int bytes; private final String toString; private SerializedForm(String algorithmName, int bytes, String toString) {\n      this.algorithmName = algorithmName;\n      this.bytes = bytes;\n      this.toString = toString; }\n\n    private Object readResolve() { return new MessageDigestHashFunction(algorithmName, bytes, toString); }\n\n    private static final long serialVersionUID = 0; } Object writeReplace() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString); }\n\n  private void readObject(ObjectInputStream stream) throws InvalidObjectException {\n    throw new InvalidObjectException(\"Use SerializedForm\"); }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest; private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest digest, int bytes) {\n      this.digest = digest; this.bytes = bytes;\n    }\n\n    @Override protected void update(byte b) {\n      checkNotDone();\n      digest.update(b); }\n\n    @Override\n    protected void update(byte[] b, int off, int len) {\n      checkNotDone();\n      digest.update(b, off, len);\n    }\n\n    @Override protected void update(ByteBuffer bytes) {\n      checkNotDone();\n      digest.update(bytes); } private void checkNotDone() { checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode hash() { checkNotDone();\n      done = true;\n      return (bytes == digest.getDigestLength()) ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes)); }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "2df879e37639d20dca0dfb577d9570ff05a3623feeed51de9c7d0b94b9922e59", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "partially-compact-layout", "level": 10, "line_count": 100, "local_path": "layout/partially-compact-layout/I10__google-guava__MessageDigestHashFunction__492f9055.java", "order": 10, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 123, "line_break_groups_removed": 49, "line_breaks_removed": 54, "whitespace_characters_removed": 177}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-b7e1492f9055-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 571, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d22ad162ebb0-I11", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String algorithmName, String toString) {\n    this.prototype = getMessageDigest(algorithmName);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(toString);\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  MessageDigestHashFunction(String algorithmName, int bytes, String toString) {\n    this.toString = checkNotNull(toString);\n    this.prototype = getMessageDigest(algorithmName);\n    int maxLength = prototype.getDigestLength();\n    final int a = 2;\n    final int c = 2;\n    checkArgument(\n        bytes >= (a + c) && bytes <= maxLength, \"bytes (%s) must be >= 4 and < %s\", bytes, maxLength);\n    this.bytes = bytes;\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  private static boolean supportsClone(MessageDigest digest) {\n    try {\n      Object unused = digest.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    }\n  }\n\n  @Override\n  public int bits() {\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String toString() {\n    return toString;\n  }\n\n  private static MessageDigest getMessageDigest(String algorithmName) {\n    try {\n      return MessageDigest.getInstance(algorithmName);\n    } catch (NoSuchAlgorithmException e) {\n      throw new AssertionError(e);\n    }\n  }\n\n  @Override\n  public Hasher newHasher() {\n    if (supportsClone) {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) {\n        // falls through\n      }\n    }\n    return new MessageDigestHasher(getMessageDigest(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String algorithmName, int bytes, String toString) {\n      this.algorithmName = algorithmName;\n      this.bytes = bytes;\n      this.toString = toString;\n    }\n\n    private Object readResolve() {\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0;\n  }\n\n  Object writeReplace() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void readObject(ObjectInputStream stream) throws InvalidObjectException {\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest digest, int bytes) {\n      this.digest = digest;\n      this.bytes = bytes;\n    }\n\n    @Override\n    protected void update(byte b) {\n      checkNotDone();\n      digest.update(b);\n    }\n\n    @Override\n    protected void update(byte[] b, int off, int len) {\n      checkNotDone();\n      digest.update(b, off, len);\n    }\n\n    @Override\n    protected void update(ByteBuffer bytes) {\n      checkNotDone();\n      digest.update(bytes);\n    }\n\n    private void checkNotDone() {\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode hash() {\n      checkNotDone();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "e9a4d720be1f280e516b41f5271ea27a846d739fcf4022453f4b14d0d61fc4f9", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 156, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__MessageDigestHashFunction__d162ebb0.java", "order": 11, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 1, "intermediate_variables_introduced": 2, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-d22ad162ebb0-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 572, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-80163f1071a2-I12", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String algorithmName, String toString) {\n    this.prototype = getMessageDigest(algorithmName);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(toString);\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  MessageDigestHashFunction(String algorithmName, int bytes, String toString) {\n    this.toString = checkNotNull(toString);\n    this.prototype = getMessageDigest(algorithmName);\n    int maxLength = prototype.getDigestLength();\n    checkArgument(\n        bytes >= 4 && bytes <= maxLength, \"bytes (%s) must be >= 4 and < %s\", bytes, maxLength);\n    this.bytes = bytes;\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  private static boolean supportsClone(MessageDigest digest) {\n    try {\n      Object unused = digest.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    }\n  }\n\n  @Override\n  public int bits() {\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String toString() {\n    return toString;\n  }\n\n  private static MessageDigest getMessageDigest(String algorithmName) {\n    try {\n      return MessageDigest.getInstance(algorithmName);\n    } catch (NoSuchAlgorithmException e) {\n      throw new AssertionError(e);\n    }\n  }\n\n  @Override\n  public Hasher newHasher() {\n    if (supportsClone) {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) {\n        // falls through\n      }\n    }\n    return new MessageDigestHasher(getMessageDigest(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String algorithmName, int bytes, String toString) {\n      this.algorithmName = algorithmName;\n      this.bytes = bytes;\n      this.toString = toString;\n    }\n\n    private Object readResolve() {\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0;\n  }\n\n  Object writeReplace() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void readObject(ObjectInputStream stream) throws InvalidObjectException {\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest digest, int bytes) {\n      this.digest = digest;\n      this.bytes = bytes;\n    }\n\n    @Override\n    protected void update(byte b) {\n      checkNotDone();\n      digest.update(b);\n    }\n\n    @Override\n    protected void update(byte[] b, int off, int len) {\n      checkNotDone();\n      digest.update(b, off, len);\n    }\n\n    @Override\n    protected void update(ByteBuffer bytes) {\n      checkNotDone();\n      digest.update(bytes);\n    }\n\n    private void checkNotDone() {\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode hash() {\n      checkNotDone();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 154, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__MessageDigestHashFunction__3f1071a2.java", "order": 12, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-80163f1071a2-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 573, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f51dbd51a1da-I13", "source": "package com.google.common.hash;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Preconditions.checkState;\nimport com.google.errorprone.annotations.Immutable;\nimport java.io.InvalidObjectException;\nimport java.io.ObjectInputStream;\nimport java.io.Serializable;\nimport java.nio.ByteBuffer;\nimport java.security.MessageDigest;\nimport java.security.NoSuchAlgorithmException;\nimport java.util.Arrays;\n\n/**\n * {@link HashFunction} adapter for {@link MessageDigest} instances.\n *\n * @author Kevin Bourrillion\n * @author Dimitris Andreou\n */\n@Immutable\nfinal class MessageDigestHashFunction extends AbstractHashFunction implements Serializable {\n\n  @SuppressWarnings(\"Immutable\") // cloned before each use\n  private final MessageDigest prototype;\n\n  private final int bytes;\n  private final boolean supportsClone;\n  private final String toString;\n\n  MessageDigestHashFunction(String algorithmName, String toString) {\n    this.prototype = getMessageDigest(algorithmName);\n    this.bytes = prototype.getDigestLength();\n    this.toString = checkNotNull(toString);\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  MessageDigestHashFunction(String algorithmName, int bytes, String toString) {\n    this.toString = checkNotNull(toString);\n    this.prototype = getMessageDigest(algorithmName);\n    int maxLength = prototype.getDigestLength();\n    checkArgument(\n        bytes >= 4 && bytes <= maxLength, \"bytes (%s) must be >= 4 and < %s\", bytes, maxLength);\n    this.bytes = bytes;\n    this.supportsClone = supportsClone(prototype);\n  }\n\n  private static boolean supportsClone(MessageDigest digest) {\n    try {\n      Object unused = digest.clone();\n      return true;\n    } catch (CloneNotSupportedException e) {\n      return false;\n    }\n  }\n\n  @Override\n  public int bits() {\n    return bytes * Byte.SIZE;\n  }\n\n  @Override\n  public String toString() {\n    return toString;\n  }\n\n  private static MessageDigest getMessageDigest(String algorithmName) {\n    try {\n      return MessageDigest.getInstance(algorithmName);\n    } catch (NoSuchAlgorithmException e) {\n      throw new AssertionError(e);\n    }\n  }\n\n  @Override\n  public Hasher newHasher() {\n    if (supportsClone) {\n      try {\n        return new MessageDigestHasher((MessageDigest) prototype.clone(), bytes);\n      } catch (CloneNotSupportedException e) {\n        // falls through\n      }\n    }\n    return new MessageDigestHasher(getMessageDigest(prototype.getAlgorithm()), bytes);\n  }\n\n  private static final class SerializedForm implements Serializable {\n    private final String algorithmName;\n    private final int bytes;\n    private final String toString;\n\n    private SerializedForm(String algorithmName, int bytes, String toString) {\n      this.algorithmName = algorithmName;\n      this.bytes = bytes;\n      this.toString = toString;\n    }\n\n    private Object readResolve() {\n      return new MessageDigestHashFunction(algorithmName, bytes, toString);\n    }\n\n    private static final long serialVersionUID = 0;\n  }\n\n  Object writeReplace() {\n    return new SerializedForm(prototype.getAlgorithm(), bytes, toString);\n  }\n\n  private void readObject(ObjectInputStream stream) throws InvalidObjectException {\n    throw new InvalidObjectException(\"Use SerializedForm\");\n  }\n\n  /** Hasher that updates a message digest. */\n  private static final class MessageDigestHasher extends AbstractByteHasher {\n    private final MessageDigest digest;\n    private final int bytes;\n    private boolean done;\n\n    private MessageDigestHasher(MessageDigest digest, int bytes) {\n      this.digest = digest;\n      this.bytes = bytes;\n    }\n\n    @Override\n    protected void update(byte b) {\n      checkNotDone();\n      digest.update(b);\n    }\n\n    @Override\n    protected void update(byte[] b, int off, int len) {\n      checkNotDone();\n      digest.update(b, off, len);\n    }\n\n    @Override\n    protected void update(ByteBuffer bytes) {\n      checkNotDone();\n      digest.update(bytes);\n    }\n\n    private void checkNotDone() {\n      checkState(!done, \"Cannot re-use a Hasher after calling hash() on it\");\n    }\n\n    @Override\n    public HashCode hash() {\n      checkNotDone();\n      done = true;\n      return (bytes == digest.getDigestLength())\n          ? HashCode.fromBytesNoCopy(digest.digest())\n          : HashCode.fromBytesNoCopy(Arrays.copyOf(digest.digest(), bytes));\n    }\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__MessageDigestHashFunction__b39999a3.java", "base_sample_id": "source-b7e045ca612cd07c", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/hash/MessageDigestHashFunction.java", "interference": "lower-for-to-while", "level": 13, "line_count": 154, "local_path": "control-flow/lower-for-to-while/I13__google-guava__MessageDigestHashFunction__bd51a1da.java", "order": 13, "original_content_sha256": "0be2dd9b670a6bfe7ab05ad9e0660b9641e062cc724eac57201234ee0ce5c86d", "parent_variant_id": "int-218fb39999a3-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/hash/MessageDigestHashFunction.java#L30-L170", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "MessageDigestHashFunction", "variant_id": "int-f51dbd51a1da-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 574, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9de467873d89-SRC", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void readFully(byte[] b);\n\n  @Override\n  void readFully(byte[] b, int off, int len);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override\n  int skipBytes(int n);\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  boolean readBoolean();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  byte readByte();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int readUnsignedByte();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short readShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readUnsignedShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char readChar();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readInt();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  long readLong();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  float readFloat();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  double readDouble();\n\n  @CanIgnoreReturnValue // to skip a line\n  @Override\n  @Nullable String readLine();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override\n  String readUTF();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": null, "level": 0, "line_count": 82, "local_path": "source-original/SRC__google-guava__ByteArrayDataInput__67873d89.java", "order": 0, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-9de467873d89-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 379, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8a2804af9ed8-I01", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n\n\n\n\n\n\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void readFully(byte[] b);\n\n  @Override\n  void readFully(byte[] b, int off, int len);\n\n   \n   \n  @Override\n  int skipBytes(int n);\n\n  @CanIgnoreReturnValue  \n  @Override\n  boolean readBoolean();\n\n  @CanIgnoreReturnValue  \n  @Override\n  byte readByte();\n\n  @CanIgnoreReturnValue  \n  @Override\n  int readUnsignedByte();\n\n  @CanIgnoreReturnValue  \n  @Override\n  short readShort();\n\n  @CanIgnoreReturnValue  \n  @Override\n  int readUnsignedShort();\n\n  @CanIgnoreReturnValue  \n  @Override\n  char readChar();\n\n  @CanIgnoreReturnValue  \n  @Override\n  int readInt();\n\n  @CanIgnoreReturnValue  \n  @Override\n  long readLong();\n\n  @CanIgnoreReturnValue  \n  @Override\n  float readFloat();\n\n  @CanIgnoreReturnValue  \n  @Override\n  double readDouble();\n\n  @CanIgnoreReturnValue  \n  @Override\n  @Nullable String readLine();\n\n  @CanIgnoreReturnValue  \n  @Override\n  String readUTF();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "682eca255a98c43477083dd79e8b9edd0ae7433035119e5f9b5f8629cc115e98", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "remove-comments", "level": 1, "line_count": 82, "local_path": "comments/remove-comments/I01__google-guava__ByteArrayDataInput__04af9ed8.java", "order": 1, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 903, "comments_removed": 15}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-8a2804af9ed8-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 380, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c890bccc2f7f-I02", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void read(byte[] b);\n\n  @Override\n  void read(byte[] b, int off, int len);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override\n  int skip(int n);\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  boolean read2();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  byte read3();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int read4();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short read5();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int read6();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char read7();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int read8();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  long read9();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  float read10();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  double read11();\n\n  @CanIgnoreReturnValue // to skip a line\n  @Override\n  @Nullable String read12();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override\n  String read13();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "aebcdf2ad474abd60fe1b7c9fa50058b5e8cb4ad385fbdb2c50854a096fd6136", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "shorten-identifiers", "level": 2, "line_count": 82, "local_path": "identifiers/shorten-identifiers/I02__google-guava__ByteArrayDataInput__bccc2f7f.java", "order": 2, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 15, "method_name_collisions_avoided": 12, "method_name_groups": 14}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-c890bccc2f7f-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 381, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d39a4df8bc64-I03", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void buildPath(byte[] age);\n\n  @Override\n  void buildPath(byte[] key, int map, int user);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override\n  int reconcile(int item);\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  boolean fetchWindow();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  byte schedule();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int validateAddress();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short fetchData();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int validateMessage();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char parseKey();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int combine();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  long findNode();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  float buildMode();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  double saveConfig();\n\n  @CanIgnoreReturnValue // to skip a line\n  @Override\n  @Nullable String compress();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override\n  String contain();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "1b1ec1a4689d034d6555a084ed6a5c1a5a40f67795f24ad8fc2b3b6961a5af41", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "mislead-identifiers", "level": 3, "line_count": 82, "local_path": "identifiers/mislead-identifiers/I03__google-guava__ByteArrayDataInput__4df8bc64.java", "order": 3, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 7, "local_exact_length_matches": 1, "local_random_pool_selections": 5, "local_total_length_difference": 8, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 15, "method_exact_length_matches": 12, "method_name_groups": 14, "method_random_pool_selections": 14, "method_total_length_difference": 3}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-d39a4df8bc64-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 382, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a38b3256d810-I04", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void a(byte[] a);\n\n  @Override\n  void a(byte[] b, int c, int d);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override\n  int b(int e);\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  boolean c();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  byte d();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int e();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short f();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int g();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char h();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int i();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  long j();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  float k();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  double l();\n\n  @CanIgnoreReturnValue // to skip a line\n  @Override\n  @Nullable String m();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override\n  String n();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "685bd8777da5a135f027219b1a4580da80b0f7500e73b3bd8ab482efda49f3d5", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "garble-identifiers", "level": 4, "line_count": 82, "local_path": "identifiers/garble-identifiers/I04__google-guava__ByteArrayDataInput__3256d810.java", "order": 4, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 15, "method_name_collisions_avoided": 0, "method_name_groups": 14}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-a38b3256d810-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 383, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2d1199fa0b9c-I05", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void readFully(byte[] b);\n\n  @Override\n  void readFully(byte[] b, int off, int len);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override\n  int skipBytes(int n);\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  boolean readBoolean();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  byte readByte();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int readUnsignedByte();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short readShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readUnsignedShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char readChar();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readInt();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  long readLong();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  float readFloat();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  double readDouble();\n\n  @CanIgnoreReturnValue // to skip a line\n  @Override\n  @Nullable String readLine();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override\n  String readUTF();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "encode-integer-literals", "level": 5, "line_count": 82, "local_path": "expressions/encode-integer-literals/I05__google-guava__ByteArrayDataInput__99fa0b9c.java", "order": 5, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-2d1199fa0b9c-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 384, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f7ec88687689-I06", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void readFully(byte[] b);\n\n  @Override\n  void readFully(byte[] b, int off, int len);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override\n  int skipBytes(int n);\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  boolean readBoolean();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  byte readByte();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int readUnsignedByte();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short readShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readUnsignedShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char readChar();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readInt();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  long readLong();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  float readFloat();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  double readDouble();\n\n  @CanIgnoreReturnValue // to skip a line\n  @Override\n  @Nullable String readLine();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override\n  String readUTF();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "invert-conditions", "level": 6, "line_count": 82, "local_path": "expressions/invert-conditions/I06__google-guava__ByteArrayDataInput__88687689.java", "order": 6, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-f7ec88687689-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 385, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a49450dd0007-I07", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void readFully(byte[] b);\n\n  @Override\n  void readFully(byte[] b, int off, int len);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override\n  int skipBytes(int n);\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  boolean readBoolean();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  byte readByte();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int readUnsignedByte();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short readShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readUnsignedShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char readChar();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readInt();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  long readLong();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  float readFloat();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  double readDouble();\n\n  @CanIgnoreReturnValue // to skip a line\n  @Override\n  @Nullable String readLine();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override\n  String readUTF();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "insert-dead-branches", "level": 7, "line_count": 82, "local_path": "code-injection/insert-dead-branches/I07__google-guava__ByteArrayDataInput__50dd0007.java", "order": 7, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-a49450dd0007-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 386, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a578a7274134-I08", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void readFully(byte[] b);\n\n  @Override\n  void readFully(byte[] b, int off, int len);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override\n  int skipBytes(int n);\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  boolean readBoolean();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  byte readByte();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int readUnsignedByte();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short readShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readUnsignedShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char readChar();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readInt();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  long readLong();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  float readFloat();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  double readDouble();\n\n  @CanIgnoreReturnValue // to skip a line\n  @Override\n  @Nullable String readLine();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override\n  String readUTF();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 82, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__ByteArrayDataInput__a7274134.java", "order": 8, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-a578a7274134-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 387, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c0ac116ff9be-I09", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void readFully(byte[] b);\n\n  @Override\n  void readFully(byte[] b, int off, int len);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override\n  int skipBytes(int n);\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  boolean readBoolean();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  byte readByte();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int readUnsignedByte();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short readShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readUnsignedShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char readChar();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readInt();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  long readLong();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  float readFloat();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  double readDouble();\n\n  @CanIgnoreReturnValue // to skip a line\n  @Override\n  @Nullable String readLine();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override\n  String readUTF();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 82, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__ByteArrayDataInput__116ff9be.java", "order": 9, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-c0ac116ff9be-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 388, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5fcbba2cb8e0-I10", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible @GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void readFully(byte[] b);\n\n  @Override\n  void readFully(byte[] b, int off, int len);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override int skipBytes(int n); @CanIgnoreReturnValue // to skip a byte\n  @Override boolean readBoolean();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override byte readByte();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int readUnsignedByte(); @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short readShort(); @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readUnsignedShort(); @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char readChar();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override int readInt();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override long readLong(); @CanIgnoreReturnValue // to skip some bytes\n  @Override float readFloat();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override double readDouble(); @CanIgnoreReturnValue // to skip a line\n  @Override @Nullable String readLine();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override String readUTF();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "35b4ca2fcfa52e9d5e95eef64c12320403bb6c9c51d8c30e737a7f39cd511910", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "partially-compact-layout", "level": 10, "line_count": 60, "local_path": "layout/partially-compact-layout/I10__google-guava__ByteArrayDataInput__ba2cb8e0.java", "order": 10, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 41, "line_break_groups_removed": 16, "line_breaks_removed": 22, "whitespace_characters_removed": 36}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-5fcbba2cb8e0-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 389, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-21a0a12cab3b-I11", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void readFully(byte[] b);\n\n  @Override\n  void readFully(byte[] b, int off, int len);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override\n  int skipBytes(int n);\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  boolean readBoolean();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  byte readByte();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int readUnsignedByte();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short readShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readUnsignedShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char readChar();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readInt();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  long readLong();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  float readFloat();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  double readDouble();\n\n  @CanIgnoreReturnValue // to skip a line\n  @Override\n  @Nullable String readLine();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override\n  String readUTF();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 82, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__ByteArrayDataInput__a12cab3b.java", "order": 11, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-21a0a12cab3b-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 390, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ffbdb6326bfb-I12", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void readFully(byte[] b);\n\n  @Override\n  void readFully(byte[] b, int off, int len);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override\n  int skipBytes(int n);\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  boolean readBoolean();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  byte readByte();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int readUnsignedByte();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short readShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readUnsignedShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char readChar();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readInt();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  long readLong();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  float readFloat();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  double readDouble();\n\n  @CanIgnoreReturnValue // to skip a line\n  @Override\n  @Nullable String readLine();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override\n  String readUTF();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 82, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__ByteArrayDataInput__b6326bfb.java", "order": 12, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-ffbdb6326bfb-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 391, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8094fc88b801-I13", "source": "package com.google.common.io;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.io.DataInput;\nimport java.io.IOException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An extension of {@code DataInput} for reading from in-memory byte arrays; its methods offer\n * identical functionality but do not throw {@link IOException}.\n *\n * <p><b>Warning:</b> The caller is responsible for not attempting to read past the end of the\n * array. If any method encounters the end of the array prematurely, it throws {@link\n * IllegalStateException} to signify <i>programmer error</i>. This behavior is a technical violation\n * of the supertype's contract, which specifies a checked exception.\n *\n * @author Kevin Bourrillion\n * @since 1.0\n */\n@J2ktIncompatible\n@GwtIncompatible\npublic interface ByteArrayDataInput extends DataInput {\n  @Override\n  void readFully(byte[] b);\n\n  @Override\n  void readFully(byte[] b, int off, int len);\n\n  // not guaranteed to skip n bytes so result should NOT be ignored\n  // use ByteStreams.skipFully or one of the read methods instead\n  @Override\n  int skipBytes(int n);\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  boolean readBoolean();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  byte readByte();\n\n  @CanIgnoreReturnValue // to skip a byte\n  @Override\n  int readUnsignedByte();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  short readShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readUnsignedShort();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  char readChar();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  int readInt();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  long readLong();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  float readFloat();\n\n  @CanIgnoreReturnValue // to skip some bytes\n  @Override\n  double readDouble();\n\n  @CanIgnoreReturnValue // to skip a line\n  @Override\n  @Nullable String readLine();\n\n  @CanIgnoreReturnValue // to skip a field\n  @Override\n  String readUTF();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__ByteArrayDataInput__67873d89.java", "base_sample_id": "source-63d3889a5bb65d5c", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/io/ByteArrayDataInput.java", "interference": "lower-for-to-while", "level": 13, "line_count": 82, "local_path": "control-flow/lower-for-to-while/I13__google-guava__ByteArrayDataInput__fc88b801.java", "order": 13, "original_content_sha256": "5eefd782d3c65bf709b2152a368a07ace17dbf7623d0993d86c5c3a8cbb30112", "parent_variant_id": "int-9de467873d89-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/io/ByteArrayDataInput.java#L24-L97", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "ByteArrayDataInput", "variant_id": "int-8094fc88b801-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 392, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ace67483c043-SRC", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long getSignificand(double d) {\n    checkArgument(isFinite(d), \"not a normal value\");\n    int exponent = getExponent(d);\n    long bits = doubleToRawLongBits(d);\n    bits &= SIGNIFICAND_MASK;\n    return (exponent == MIN_EXPONENT - 1) ? bits << 1 : bits | IMPLICIT_BIT;\n  }\n\n  static boolean isFinite(double d) {\n    return getExponent(d) <= MAX_EXPONENT;\n  }\n\n  static boolean isNormal(double d) {\n    return getExponent(d) >= MIN_EXPONENT;\n  }\n\n  /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double scaleNormalize(double x) {\n    long significand = doubleToRawLongBits(x) & SIGNIFICAND_MASK;\n    return longBitsToDouble(significand | ONE_BITS);\n  }\n\n  static double bigToDouble(BigInteger x) {\n    // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger absX = x.abs();\n    int exponent = absX.bitLength() - 1;\n    // exponent == floor(log2(abs(x)))\n    if (exponent < Long.SIZE - 1) {\n      return x.longValue();\n    } else if (exponent > MAX_EXPONENT) {\n      return x.signum() * POSITIVE_INFINITY;\n    }\n\n    /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    int shift = exponent - SIGNIFICAND_BITS - 1;\n    long twiceSignifFloor = absX.shiftRight(shift).longValue();\n    long signifFloor = twiceSignifFloor >> 1;\n    signifFloor &= SIGNIFICAND_MASK; // remove the implied bit\n\n    /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    boolean increment =\n        (twiceSignifFloor & 1) != 0 && ((signifFloor & 1) != 0 || absX.getLowestSetBit() < shift);\n    long signifRounded = increment ? signifFloor + 1 : signifFloor;\n    long bits = (long) (exponent + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    bits += signifRounded;\n    /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */\n    bits |= x.signum() & SIGN_MASK;\n    return longBitsToDouble(bits);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double ensureNonNegative(double value) {\n    checkArgument(!isNaN(value));\n    return max(value, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": null, "level": 0, "line_count": 119, "local_path": "source-original/SRC__google-guava__DoubleUtils__7483c043.java", "order": 0, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-ace67483c043-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 435, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5d78e2580a2b-I01", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n\n\n\n\n\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {}\n\n   \n   \n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n   \n   \n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n   \n   \n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n   \n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long getSignificand(double d) {\n    checkArgument(isFinite(d), \"not a normal value\");\n    int exponent = getExponent(d);\n    long bits = doubleToRawLongBits(d);\n    bits &= SIGNIFICAND_MASK;\n    return (exponent == MIN_EXPONENT - 1) ? bits << 1 : bits | IMPLICIT_BIT;\n  }\n\n  static boolean isFinite(double d) {\n    return getExponent(d) <= MAX_EXPONENT;\n  }\n\n  static boolean isNormal(double d) {\n    return getExponent(d) >= MIN_EXPONENT;\n  }\n\n  \n\n\n\n  static double scaleNormalize(double x) {\n    long significand = doubleToRawLongBits(x) & SIGNIFICAND_MASK;\n    return longBitsToDouble(significand | ONE_BITS);\n  }\n\n  static double bigToDouble(BigInteger x) {\n     \n    BigInteger absX = x.abs();\n    int exponent = absX.bitLength() - 1;\n     \n    if (exponent < Long.SIZE - 1) {\n      return x.longValue();\n    } else if (exponent > MAX_EXPONENT) {\n      return x.signum() * POSITIVE_INFINITY;\n    }\n\n    \n\n\n\n\n\n\n\n    int shift = exponent - SIGNIFICAND_BITS - 1;\n    long twiceSignifFloor = absX.shiftRight(shift).longValue();\n    long signifFloor = twiceSignifFloor >> 1;\n    signifFloor &= SIGNIFICAND_MASK;  \n\n    \n\n\n\n\n    boolean increment =\n        (twiceSignifFloor & 1) != 0 && ((signifFloor & 1) != 0 || absX.getLowestSetBit() < shift);\n    long signifRounded = increment ? signifFloor + 1 : signifFloor;\n    long bits = (long) (exponent + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    bits += signifRounded;\n    \n\n\n\n\n\n    bits |= x.signum() & SIGN_MASK;\n    return longBitsToDouble(bits);\n  }\n\n   \n  static double ensureNonNegative(double value) {\n    checkArgument(!isNaN(value));\n    return max(value, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "44e615d312f8d8b1d09848c57d4ef3dd2ac09b36f3e30e4e144ce0045dba19df", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "remove-comments", "level": 1, "line_count": 119, "local_path": "comments/remove-comments/I01__google-guava__DoubleUtils__e2580a2b.java", "order": 1, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1836, "comments_removed": 16}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-5d78e2580a2b-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 436, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9d9aa0e5d9d5-I02", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long get(double d) {\n    checkArgument(is(d), \"not a normal value\");\n    int exp = getExponent(d);\n    long bit = doubleToRawLongBits(d);\n    bit &= SIGNIFICAND_MASK;\n    return (exp == MIN_EXPONENT - 1) ? bit << 1 : bit | IMPLICIT_BIT;\n  }\n\n  static boolean is(double d) {\n    return getExponent(d) <= MAX_EXPONENT;\n  }\n\n  static boolean is2(double d) {\n    return getExponent(d) >= MIN_EXPONENT;\n  }\n\n  /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double scale(double x) {\n    long sig = doubleToRawLongBits(x) & SIGNIFICAND_MASK;\n    return longBitsToDouble(sig | ONE_BITS);\n  }\n\n  static double big(BigInteger x) {\n    // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger abs2 = x.abs();\n    int exp2 = abs2.bitLength() - 1;\n    // exponent == floor(log2(abs(x)))\n    if (exp2 < Long.SIZE - 1) {\n      return x.longValue();\n    } else if (exp2 > MAX_EXPONENT) {\n      return x.signum() * POSITIVE_INFINITY;\n    }\n\n    /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    int shi = exp2 - SIGNIFICAND_BITS - 1;\n    long twice = abs2.shiftRight(shi).longValue();\n    long signif = twice >> 1;\n    signif &= SIGNIFICAND_MASK; // remove the implied bit\n\n    /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    boolean inc =\n        (twice & 1) != 0 && ((signif & 1) != 0 || abs2.getLowestSetBit() < shi);\n    long signif2 = inc ? signif + 1 : signif;\n    long bit2 = (long) (exp2 + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    bit2 += signif2;\n    /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */\n    bit2 |= x.signum() & SIGN_MASK;\n    return longBitsToDouble(bit2);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double ensure(double val) {\n    checkArgument(!isNaN(val));\n    return max(val, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e8836c0c468c0d740534954ebdc939692e88dad3aa1c313e8d578ea3383b2e1b", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "shorten-identifiers", "level": 2, "line_count": 119, "local_path": "identifiers/shorten-identifiers/I02__google-guava__DoubleUtils__a0e5d9d5.java", "order": 2, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 37, "identifiers_declared": 17, "local_name_collisions_avoided": 4, "method_calls_renamed": 1, "method_declarations_renamed": 6, "method_name_collisions_avoided": 1, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-9d9aa0e5d9d5-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 437, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e7f091172cc6-I03", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long refreshRequest(double key) {\n    checkArgument(readUser(key), \"not a normal value\");\n    int document = getExponent(key);\n    long step = doubleToRawLongBits(key);\n    step &= SIGNIFICAND_MASK;\n    return (document == MIN_EXPONENT - 1) ? step << 1 : step | IMPLICIT_BIT;\n  }\n\n  static boolean readUser(double map) {\n    return getExponent(map) <= MAX_EXPONENT;\n  }\n\n  static boolean sendUser(double age) {\n    return getExponent(age) >= MIN_EXPONENT;\n  }\n\n  /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double refreshAccount(double path) {\n    long cachedOrder = doubleToRawLongBits(path) & SIGNIFICAND_MASK;\n    return longBitsToDouble(cachedOrder | ONE_BITS);\n  }\n\n  static double sendAccount(BigInteger size) {\n    // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger node = size.abs();\n    int finalKey = node.bitLength() - 1;\n    // exponent == floor(log2(abs(x)))\n    if (finalKey < Long.SIZE - 1) {\n      return size.longValue();\n    } else if (finalKey > MAX_EXPONENT) {\n      return size.signum() * POSITIVE_INFINITY;\n    }\n\n    /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    int entry = finalKey - SIGNIFICAND_BITS - 1;\n    long primaryRequest = node.shiftRight(entry).longValue();\n    long finalConfig = primaryRequest >> 1;\n    finalConfig &= SIGNIFICAND_MASK; // remove the implied bit\n\n    /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    boolean localItem =\n        (primaryRequest & 1) != 0 && ((finalConfig & 1) != 0 || node.getLowestSetBit() < entry);\n    long defaultClient = localItem ? finalConfig + 1 : finalConfig;\n    long mode = (long) (finalKey + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    mode += defaultClient;\n    /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */\n    mode |= size.signum() & SIGN_MASK;\n    return longBitsToDouble(mode);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double validateSession(double event) {\n    checkArgument(!isNaN(event));\n    return max(event, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "16be698d5d4fb72aa64f26a59a2fec8c790a7b13e6165f30b6df59599fd4bce5", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "mislead-identifiers", "level": 3, "line_count": 119, "local_path": "identifiers/mislead-identifiers/I03__google-guava__DoubleUtils__91172cc6.java", "order": 3, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 37, "identifiers_declared": 17, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 9, "local_exact_length_matches": 11, "local_random_pool_selections": 17, "local_total_length_difference": 14, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 1, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 6, "method_exact_length_matches": 5, "method_name_groups": 6, "method_random_pool_selections": 6, "method_total_length_difference": 2}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-e7f091172cc6-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 438, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7ca92c2bc86c-I04", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long a(double a) {\n    checkArgument(b(a), \"not a normal value\");\n    int b = getExponent(a);\n    long c = doubleToRawLongBits(a);\n    c &= SIGNIFICAND_MASK;\n    return (b == MIN_EXPONENT - 1) ? c << 1 : c | IMPLICIT_BIT;\n  }\n\n  static boolean b(double d) {\n    return getExponent(d) <= MAX_EXPONENT;\n  }\n\n  static boolean c(double d) {\n    return getExponent(d) >= MIN_EXPONENT;\n  }\n\n  /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double d(double e) {\n    long f = doubleToRawLongBits(e) & SIGNIFICAND_MASK;\n    return longBitsToDouble(f | ONE_BITS);\n  }\n\n  static double e(BigInteger g) {\n    // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger h = g.abs();\n    int i = h.bitLength() - 1;\n    // exponent == floor(log2(abs(x)))\n    if (i < Long.SIZE - 1) {\n      return g.longValue();\n    } else if (i > MAX_EXPONENT) {\n      return g.signum() * POSITIVE_INFINITY;\n    }\n\n    /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    int j = i - SIGNIFICAND_BITS - 1;\n    long k = h.shiftRight(j).longValue();\n    long l = k >> 1;\n    l &= SIGNIFICAND_MASK; // remove the implied bit\n\n    /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    boolean m =\n        (k & 1) != 0 && ((l & 1) != 0 || h.getLowestSetBit() < j);\n    long n = m ? l + 1 : l;\n    long o = (long) (i + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    o += n;\n    /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */\n    o |= g.signum() & SIGN_MASK;\n    return longBitsToDouble(o);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double f(double p) {\n    checkArgument(!isNaN(p));\n    return max(p, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "3fc9476ae820bd8c7569ac9865bcedf7e89c7f318574f7473f3d929042753891", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "garble-identifiers", "level": 4, "line_count": 119, "local_path": "identifiers/garble-identifiers/I04__google-guava__DoubleUtils__2c2bc86c.java", "order": 4, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 37, "identifiers_declared": 17, "local_name_collisions_avoided": 0, "method_calls_renamed": 1, "method_declarations_renamed": 6, "method_name_collisions_avoided": 0, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-7ca92c2bc86c-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 439, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-03d0d548cb92-I05", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 0x34;\n\n  static final int EXPONENT_BIAS = 0x3ff;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 0x1;\n\n  static long getSignificand(double d) {\n    checkArgument(isFinite(d), \"not a normal value\");\n    int exponent = getExponent(d);\n    long bits = doubleToRawLongBits(d);\n    bits &= SIGNIFICAND_MASK;\n    return (exponent == MIN_EXPONENT - 0x1) ? bits << 0x1 : bits | IMPLICIT_BIT;\n  }\n\n  static boolean isFinite(double d) {\n    return getExponent(d) <= MAX_EXPONENT;\n  }\n\n  static boolean isNormal(double d) {\n    return getExponent(d) >= MIN_EXPONENT;\n  }\n\n  /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double scaleNormalize(double x) {\n    long significand = doubleToRawLongBits(x) & SIGNIFICAND_MASK;\n    return longBitsToDouble(significand | ONE_BITS);\n  }\n\n  static double bigToDouble(BigInteger x) {\n    // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger absX = x.abs();\n    int exponent = absX.bitLength() - 0x1;\n    // exponent == floor(log2(abs(x)))\n    if (exponent < Long.SIZE - 0x1) {\n      return x.longValue();\n    } else if (exponent > MAX_EXPONENT) {\n      return x.signum() * POSITIVE_INFINITY;\n    }\n\n    /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    int shift = exponent - SIGNIFICAND_BITS - 0x1;\n    long twiceSignifFloor = absX.shiftRight(shift).longValue();\n    long signifFloor = twiceSignifFloor >> 0x1;\n    signifFloor &= SIGNIFICAND_MASK; // remove the implied bit\n\n    /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    boolean increment =\n        (twiceSignifFloor & 0x1) != 0x0 && ((signifFloor & 0x1) != 0x0 || absX.getLowestSetBit() < shift);\n    long signifRounded = increment ? signifFloor + 0x1 : signifFloor;\n    long bits = (long) (exponent + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    bits += signifRounded;\n    /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */\n    bits |= x.signum() & SIGN_MASK;\n    return longBitsToDouble(bits);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double ensureNonNegative(double value) {\n    checkArgument(!isNaN(value));\n    return max(value, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "bd94f9eebda807908a77de79e7e79d0ae732087c40fdbd60d8e5cebda8036199", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "encode-integer-literals", "level": 5, "line_count": 119, "local_path": "expressions/encode-integer-literals/I05__google-guava__DoubleUtils__d548cb92.java", "order": 5, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 14}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-03d0d548cb92-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 440, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-aa151de86d2a-I06", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long getSignificand(double d) {\n    checkArgument(isFinite(d), \"not a normal value\");\n    int exponent = getExponent(d);\n    long bits = doubleToRawLongBits(d);\n    bits &= SIGNIFICAND_MASK;\n    return (exponent == MIN_EXPONENT - 1) ? bits << 1 : bits | IMPLICIT_BIT;\n  }\n\n  static boolean isFinite(double d) {\n    return getExponent(d) <= MAX_EXPONENT;\n  }\n\n  static boolean isNormal(double d) {\n    return getExponent(d) >= MIN_EXPONENT;\n  }\n\n  /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double scaleNormalize(double x) {\n    long significand = doubleToRawLongBits(x) & SIGNIFICAND_MASK;\n    return longBitsToDouble(significand | ONE_BITS);\n  }\n\n  static double bigToDouble(BigInteger x) {\n    // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger absX = x.abs();\n    int exponent = absX.bitLength() - 1;\n    // exponent == floor(log2(abs(x)))\n    if (!((exponent < Long.SIZE - 1))) { if (exponent > MAX_EXPONENT) {\n      return x.signum() * POSITIVE_INFINITY;\n    } } else {\n      return x.longValue();\n    }\n\n    /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    int shift = exponent - SIGNIFICAND_BITS - 1;\n    long twiceSignifFloor = absX.shiftRight(shift).longValue();\n    long signifFloor = twiceSignifFloor >> 1;\n    signifFloor &= SIGNIFICAND_MASK; // remove the implied bit\n\n    /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    boolean increment =\n        (twiceSignifFloor & 1) != 0 && ((signifFloor & 1) != 0 || absX.getLowestSetBit() < shift);\n    long signifRounded = increment ? signifFloor + 1 : signifFloor;\n    long bits = (long) (exponent + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    bits += signifRounded;\n    /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */\n    bits |= x.signum() & SIGN_MASK;\n    return longBitsToDouble(bits);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double ensureNonNegative(double value) {\n    checkArgument(!isNaN(value));\n    return max(value, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "284bb35ceb859d5a9a4040cb5ec5bba35bae4ff50cc6bfabb855293119a5c9ff", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "invert-conditions", "level": 6, "line_count": 119, "local_path": "expressions/invert-conditions/I06__google-guava__DoubleUtils__1de86d2a.java", "order": 6, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-aa151de86d2a-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 441, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a2a4abff1f8a-I07", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {\nif (((0x891D ^ 0x891D) != 0)) { throw new AssertionError(); }\n}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long getSignificand(double d) {\nif (((0xFFDE ^ 0xFFDE) != 0)) { throw new AssertionError(); }\n\n    checkArgument(isFinite(d), \"not a normal value\");\n    int exponent = getExponent(d);\n    long bits = doubleToRawLongBits(d);\n    bits &= SIGNIFICAND_MASK;\n    return (exponent == MIN_EXPONENT - 1) ? bits << 1 : bits | IMPLICIT_BIT;\n  }\n\n  static boolean isFinite(double d) {\nif (((0xCF82 ^ 0xCF82) != 0)) { throw new AssertionError(); }\n\n    return getExponent(d) <= MAX_EXPONENT;\n  }\n\n  static boolean isNormal(double d) {\nif (((0x2A4 ^ 0x2A4) != 0)) { throw new AssertionError(); }\n\n    return getExponent(d) >= MIN_EXPONENT;\n  }\n\n  /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double scaleNormalize(double x) {\nif (((0xB4AE ^ 0xB4AE) != 0)) { throw new AssertionError(); }\n\n    long significand = doubleToRawLongBits(x) & SIGNIFICAND_MASK;\n    return longBitsToDouble(significand | ONE_BITS);\n  }\n\n  static double bigToDouble(BigInteger x) {\nif (((0x3E7A ^ 0x3E7A) != 0)) { throw new AssertionError(); }\n\n    // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger absX = x.abs();\n    int exponent = absX.bitLength() - 1;\n    // exponent == floor(log2(abs(x)))\n    if (exponent < Long.SIZE - 1) {\n      return x.longValue();\n    } else if (exponent > MAX_EXPONENT) {\n      return x.signum() * POSITIVE_INFINITY;\n    }\n\n    /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    int shift = exponent - SIGNIFICAND_BITS - 1;\n    long twiceSignifFloor = absX.shiftRight(shift).longValue();\n    long signifFloor = twiceSignifFloor >> 1;\n    signifFloor &= SIGNIFICAND_MASK; // remove the implied bit\n\n    /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    boolean increment =\n        (twiceSignifFloor & 1) != 0 && ((signifFloor & 1) != 0 || absX.getLowestSetBit() < shift);\n    long signifRounded = increment ? signifFloor + 1 : signifFloor;\n    long bits = (long) (exponent + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    bits += signifRounded;\n    /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */\n    bits |= x.signum() & SIGN_MASK;\n    return longBitsToDouble(bits);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double ensureNonNegative(double value) {\nif (((0x140F ^ 0x140F) != 0)) { throw new AssertionError(); }\n\n    checkArgument(!isNaN(value));\n    return max(value, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "677ca65fd4f86e2debf37a6745722e0c080881d7be58674512b20dfce37851e3", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "insert-dead-branches", "level": 7, "line_count": 133, "local_path": "code-injection/insert-dead-branches/I07__google-guava__DoubleUtils__abff1f8a.java", "order": 7, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 7}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-a2a4abff1f8a-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 442, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ddb0f8587130-I08", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long getSignificand(double d) {\n{\n  boolean featureEnabled = false;\n  for (int toggleCount = 0; toggleCount < 3; toggleCount++) {\n    featureEnabled = !featureEnabled;\n  }\n}\n\n    checkArgument(isFinite(d), \"not a normal value\");\n    int exponent = getExponent(d);\n    long bits = doubleToRawLongBits(d);\n    bits &= SIGNIFICAND_MASK;\n    return (exponent == MIN_EXPONENT - 1) ? bits << 1 : bits | IMPLICIT_BIT;\n  }\n\n  static boolean isFinite(double d) {\n    return getExponent(d) <= MAX_EXPONENT;\n  }\n\n  static boolean isNormal(double d) {\n    return getExponent(d) >= MIN_EXPONENT;\n  }\n\n  /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double scaleNormalize(double x) {\n    long significand = doubleToRawLongBits(x) & SIGNIFICAND_MASK;\n    return longBitsToDouble(significand | ONE_BITS);\n  }\n\n  static double bigToDouble(BigInteger x) {\n    // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger absX = x.abs();\n    int exponent = absX.bitLength() - 1;\n    // exponent == floor(log2(abs(x)))\n    if (exponent < Long.SIZE - 1) {\n      return x.longValue();\n    } else if (exponent > MAX_EXPONENT) {\n      return x.signum() * POSITIVE_INFINITY;\n    }\n\n    /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    int shift = exponent - SIGNIFICAND_BITS - 1;\n    long twiceSignifFloor = absX.shiftRight(shift).longValue();\n    long signifFloor = twiceSignifFloor >> 1;\n    signifFloor &= SIGNIFICAND_MASK; // remove the implied bit\n\n    /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    boolean increment =\n        (twiceSignifFloor & 1) != 0 && ((signifFloor & 1) != 0 || absX.getLowestSetBit() < shift);\n    long signifRounded = increment ? signifFloor + 1 : signifFloor;\n    long bits = (long) (exponent + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    bits += signifRounded;\n    /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */\n    bits |= x.signum() & SIGN_MASK;\n    return longBitsToDouble(bits);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double ensureNonNegative(double value) {\n    checkArgument(!isNaN(value));\n    return max(value, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "a7a228430e638fcba4aa22b7c843ddb9e3f706b9ed6a5b5c3a76d4b9bf84abce", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 126, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__DoubleUtils__f8587130.java", "order": 8, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 7}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-ddb0f8587130-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 443, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ad44b52b25d2-I09", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long getSignificand(double d) {\n{int lI0O_f954d993=(0xB9A9^0xB9A9);switch(lI0O_f954d993){case 0:lI0O_f954d993|=0;break;default:lI0O_f954d993&=0;}}\n\n    checkArgument(isFinite(d), \"not a normal value\");\n    int exponent = getExponent(d);\n    long bits = doubleToRawLongBits(d);\n    bits &= SIGNIFICAND_MASK;\n    return (exponent == MIN_EXPONENT - 1) ? bits << 1 : bits | IMPLICIT_BIT;\n  }\n\n  static boolean isFinite(double d) {\n    return getExponent(d) <= MAX_EXPONENT;\n  }\n\n  static boolean isNormal(double d) {\n    return getExponent(d) >= MIN_EXPONENT;\n  }\n\n  /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double scaleNormalize(double x) {\n    long significand = doubleToRawLongBits(x) & SIGNIFICAND_MASK;\n    return longBitsToDouble(significand | ONE_BITS);\n  }\n\n  static double bigToDouble(BigInteger x) {\n    // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger absX = x.abs();\n    int exponent = absX.bitLength() - 1;\n    // exponent == floor(log2(abs(x)))\n    if (exponent < Long.SIZE - 1) {\n      return x.longValue();\n    } else if (exponent > MAX_EXPONENT) {\n      return x.signum() * POSITIVE_INFINITY;\n    }\n\n    /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    int shift = exponent - SIGNIFICAND_BITS - 1;\n    long twiceSignifFloor = absX.shiftRight(shift).longValue();\n    long signifFloor = twiceSignifFloor >> 1;\n    signifFloor &= SIGNIFICAND_MASK; // remove the implied bit\n\n    /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    boolean increment =\n        (twiceSignifFloor & 1) != 0 && ((signifFloor & 1) != 0 || absX.getLowestSetBit() < shift);\n    long signifRounded = increment ? signifFloor + 1 : signifFloor;\n    long bits = (long) (exponent + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    bits += signifRounded;\n    /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */\n    bits |= x.signum() & SIGN_MASK;\n    return longBitsToDouble(bits);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double ensureNonNegative(double value) {\n    checkArgument(!isNaN(value));\n    return max(value, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d99ef82a1c9526faeafb63fa62c3498a060e6f22720333e7f0225908f0e5ee68", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 121, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__DoubleUtils__b52b25d2.java", "order": 9, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 6}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-ad44b52b25d2-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 444, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-224c8a6f0b44-I10", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument; import static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT; import static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits; import static java.lang.Double.isNaN; import static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible; import com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible final class DoubleUtils { private DoubleUtils() {}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long getSignificand(double d) { checkArgument(isFinite(d), \"not a normal value\"); int exponent = getExponent(d);\n    long bits = doubleToRawLongBits(d);\n    bits &= SIGNIFICAND_MASK; return (exponent == MIN_EXPONENT - 1) ? bits << 1 : bits | IMPLICIT_BIT; } static boolean isFinite(double d) {\n    return getExponent(d) <= MAX_EXPONENT; }\n\n  static boolean isNormal(double d) {\n    return getExponent(d) >= MIN_EXPONENT;\n  } /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double scaleNormalize(double x) { long significand = doubleToRawLongBits(x) & SIGNIFICAND_MASK;\n    return longBitsToDouble(significand | ONE_BITS);\n  } static double bigToDouble(BigInteger x) { // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger absX = x.abs();\n    int exponent = absX.bitLength() - 1; // exponent == floor(log2(abs(x)))\n    if (exponent < Long.SIZE - 1) {\n      return x.longValue();\n    } else if (exponent > MAX_EXPONENT) {\n      return x.signum() * POSITIVE_INFINITY;\n    } /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    int shift = exponent - SIGNIFICAND_BITS - 1;\n    long twiceSignifFloor = absX.shiftRight(shift).longValue(); long signifFloor = twiceSignifFloor >> 1;\n    signifFloor &= SIGNIFICAND_MASK; // remove the implied bit\n /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    boolean increment =\n        (twiceSignifFloor & 1) != 0 && ((signifFloor & 1) != 0 || absX.getLowestSetBit() < shift); long signifRounded = increment ? signifFloor + 1 : signifFloor; long bits = (long) (exponent + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    bits += signifRounded; /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */ bits |= x.signum() & SIGN_MASK; return longBitsToDouble(bits);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double ensureNonNegative(double value) {\n    checkArgument(!isNaN(value)); return max(value, 0.0);\n  } @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "a6bf8f26cb8cc4de276c126deb49ba7540042d51b4443e18627362f6dbb8f019", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "partially-compact-layout", "level": 10, "line_count": 86, "local_path": "layout/partially-compact-layout/I10__google-guava__DoubleUtils__8a6f0b44.java", "order": 10, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 71, "line_break_groups_removed": 28, "line_breaks_removed": 33, "whitespace_characters_removed": 79}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-224c8a6f0b44-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 445, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a8bc0d7ce0eb-I11", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long getSignificand(double d) {\n    checkArgument(isFinite(d), \"not a normal value\");\n    int exponent = getExponent(d);\n    long bits = doubleToRawLongBits(d);\n    bits &= SIGNIFICAND_MASK;\n    final int a = 2;\n    final int b = -1;\n    final int c = 2;\n    final int e = -1;\n    return (exponent == MIN_EXPONENT - (a + b)) ? bits << (c + e) : bits | IMPLICIT_BIT;\n  }\n\n  static boolean isFinite(double d) {\n    return getExponent(d) <= MAX_EXPONENT;\n  }\n\n  static boolean isNormal(double d) {\n    return getExponent(d) >= MIN_EXPONENT;\n  }\n\n  /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double scaleNormalize(double x) {\n    long significand = doubleToRawLongBits(x) & SIGNIFICAND_MASK;\n    return longBitsToDouble(significand | ONE_BITS);\n  }\n\n  static double bigToDouble(BigInteger x) {\n    // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger absX = x.abs();\n    final int f = 2;\n    final int g = -1;\n    int exponent = absX.bitLength() - (f + g);\n    // exponent == floor(log2(abs(x)))\n    final int h = 2;\n    final int i = -1;\n    if (exponent < Long.SIZE - (h + i)) {\n      return x.longValue();\n    } else if (exponent > MAX_EXPONENT) {\n      return x.signum() * POSITIVE_INFINITY;\n    }\n\n    /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    final int j = 2;\n    final int k = -1;\n    int shift = exponent - SIGNIFICAND_BITS - (j + k);\n    long twiceSignifFloor = absX.shiftRight(shift).longValue();\n    final int l = 2;\n    final int m = -1;\n    long signifFloor = twiceSignifFloor >> (l + m);\n    signifFloor &= SIGNIFICAND_MASK; // remove the implied bit\n\n    /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    final int n = 2;\n    final int o = -1;\n    final int p = 1;\n    final int q = -1;\n    final int r = 2;\n    final int s = -1;\n    final int t = 1;\n    final int u = -1;\n    boolean increment =\n        (twiceSignifFloor & (n + o)) != (p + q) && ((signifFloor & (r + s)) != (t + u) || absX.getLowestSetBit() < shift);\n    final int v = 2;\n    final int w = -1;\n    long signifRounded = increment ? signifFloor + (v + w) : signifFloor;\n    long bits = (long) (exponent + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    bits += signifRounded;\n    /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */\n    bits |= x.signum() & SIGN_MASK;\n    return longBitsToDouble(bits);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double ensureNonNegative(double value) {\n    checkArgument(!isNaN(value));\n    return max(value, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "2c48f85a38f529bc2fdebed4c34cbacad9e799079648d3fda187c9a34c0d77ce", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 141, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__DoubleUtils__0d7ce0eb.java", "order": 11, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 11, "intermediate_variables_introduced": 22, "statements_augmented": 7}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-a8bc0d7ce0eb-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 446, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-64ca7d1f0a67-I12", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long getSignificand(double d) {\n    checkArgument(isFinite(d), \"not a normal value\");\n    \n    long bits = doubleToRawLongBits(d);\n    bits &= SIGNIFICAND_MASK;\n    return ((getExponent(d)) == MIN_EXPONENT - 1) ? bits << 1 : bits | IMPLICIT_BIT;\n  }\n\n  static boolean isFinite(double d) {\n    return getExponent(d) <= MAX_EXPONENT;\n  }\n\n  static boolean isNormal(double d) {\n    return getExponent(d) >= MIN_EXPONENT;\n  }\n\n  /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double scaleNormalize(double x) {\n    \n    return longBitsToDouble((doubleToRawLongBits(x) & SIGNIFICAND_MASK) | ONE_BITS);\n  }\n\n  static double bigToDouble(BigInteger x) {\n    // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger absX = x.abs();\n    int exponent = absX.bitLength() - 1;\n    // exponent == floor(log2(abs(x)))\n    if (exponent < Long.SIZE - 1) {\n      return x.longValue();\n    } else if (exponent > MAX_EXPONENT) {\n      return x.signum() * POSITIVE_INFINITY;\n    }\n\n    /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    int shift = exponent - SIGNIFICAND_BITS - 1;\n    long twiceSignifFloor = absX.shiftRight(shift).longValue();\n    long signifFloor = twiceSignifFloor >> 1;\n    signifFloor &= SIGNIFICAND_MASK; // remove the implied bit\n\n    /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    boolean increment =\n        (twiceSignifFloor & 1) != 0 && ((signifFloor & 1) != 0 || absX.getLowestSetBit() < shift);\n    \n    long bits = (long) (exponent + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    bits += (increment ? signifFloor + 1 : signifFloor);\n    /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */\n    bits |= x.signum() & SIGN_MASK;\n    return longBitsToDouble(bits);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double ensureNonNegative(double value) {\n    checkArgument(!isNaN(value));\n    return max(value, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c5237b155426c33f0ca0268b63c89e3355b111da9f13cf954ad2feea2c7cbe04", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 119, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__DoubleUtils__7d1f0a67.java", "order": 12, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 3, "intermediate_variables_available": 3, "intermediate_variables_inlined": 3, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-64ca7d1f0a67-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 447, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5848ab3191b3-I13", "source": "package com.google.common.math;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static java.lang.Double.MAX_EXPONENT;\nimport static java.lang.Double.MIN_EXPONENT;\nimport static java.lang.Double.POSITIVE_INFINITY;\nimport static java.lang.Double.doubleToRawLongBits;\nimport static java.lang.Double.isNaN;\nimport static java.lang.Double.longBitsToDouble;\nimport static java.lang.Math.getExponent;\nimport static java.lang.Math.max;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.VisibleForTesting;\nimport java.math.BigInteger;\n\n/**\n * Utilities for {@code double} primitives.\n *\n * @author Louis Wasserman\n */\n@GwtIncompatible\nfinal class DoubleUtils {\n  private DoubleUtils() {}\n\n  // The mask for the significand, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGNIFICAND_MASK = 0x000fffffffffffffL;\n\n  // The mask for the exponent, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long EXPONENT_MASK = 0x7ff0000000000000L;\n\n  // The mask for the sign, according to the {@link\n  // Double#doubleToRawLongBits(double)} spec.\n  static final long SIGN_MASK = 0x8000000000000000L;\n\n  static final int SIGNIFICAND_BITS = 52;\n\n  static final int EXPONENT_BIAS = 1023;\n\n  /** The implicit 1 bit that is omitted in significands of normal doubles. */\n  static final long IMPLICIT_BIT = SIGNIFICAND_MASK + 1;\n\n  static long getSignificand(double d) {\n    checkArgument(isFinite(d), \"not a normal value\");\n    int exponent = getExponent(d);\n    long bits = doubleToRawLongBits(d);\n    bits &= SIGNIFICAND_MASK;\n    return (exponent == MIN_EXPONENT - 1) ? bits << 1 : bits | IMPLICIT_BIT;\n  }\n\n  static boolean isFinite(double d) {\n    return getExponent(d) <= MAX_EXPONENT;\n  }\n\n  static boolean isNormal(double d) {\n    return getExponent(d) >= MIN_EXPONENT;\n  }\n\n  /*\n   * Returns x scaled by a power of 2 such that it is in the range [1, 2). Assumes x is positive,\n   * normal, and finite.\n   */\n  static double scaleNormalize(double x) {\n    long significand = doubleToRawLongBits(x) & SIGNIFICAND_MASK;\n    return longBitsToDouble(significand | ONE_BITS);\n  }\n\n  static double bigToDouble(BigInteger x) {\n    // This is an extremely fast implementation of BigInteger.doubleValue(). JDK patch pending.\n    BigInteger absX = x.abs();\n    int exponent = absX.bitLength() - 1;\n    // exponent == floor(log2(abs(x)))\n    if (exponent < Long.SIZE - 1) {\n      return x.longValue();\n    } else if (exponent > MAX_EXPONENT) {\n      return x.signum() * POSITIVE_INFINITY;\n    }\n\n    /*\n     * We need the top SIGNIFICAND_BITS + 1 bits, including the \"implicit\" one bit. To make rounding\n     * easier, we pick out the top SIGNIFICAND_BITS + 2 bits, so we have one to help us round up or\n     * down. twiceSignifFloor will contain the top SIGNIFICAND_BITS + 2 bits, and signifFloor the\n     * top SIGNIFICAND_BITS + 1.\n     *\n     * It helps to consider the real number signif = absX * 2^(SIGNIFICAND_BITS - exponent).\n     */\n    int shift = exponent - SIGNIFICAND_BITS - 1;\n    long twiceSignifFloor = absX.shiftRight(shift).longValue();\n    long signifFloor = twiceSignifFloor >> 1;\n    signifFloor &= SIGNIFICAND_MASK; // remove the implied bit\n\n    /*\n     * We round up if either the fractional part of signif is strictly greater than 0.5 (which is\n     * true if the 0.5 bit is set and any lower bit is set), or if the fractional part of signif is\n     * >= 0.5 and signifFloor is odd (which is true if both the 0.5 bit and the 1 bit are set).\n     */\n    boolean increment =\n        (twiceSignifFloor & 1) != 0 && ((signifFloor & 1) != 0 || absX.getLowestSetBit() < shift);\n    long signifRounded = increment ? signifFloor + 1 : signifFloor;\n    long bits = (long) (exponent + EXPONENT_BIAS) << SIGNIFICAND_BITS;\n    bits += signifRounded;\n    /*\n     * If signifRounded == 2^53, we'd need to set all of the significand bits to zero and add 1 to\n     * the exponent. This is exactly the behavior we get from just adding signifRounded to bits\n     * directly. If the exponent is MAX_DOUBLE_EXPONENT, we round up (correctly) to\n     * Double.POSITIVE_INFINITY.\n     */\n    bits |= x.signum() & SIGN_MASK;\n    return longBitsToDouble(bits);\n  }\n\n  /** Returns its argument if it is non-negative, zero if it is negative. */\n  static double ensureNonNegative(double value) {\n    checkArgument(!isNaN(value));\n    return max(value, 0.0);\n  }\n\n  @VisibleForTesting static final long ONE_BITS = 0x3ff0000000000000L;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__DoubleUtils__7483c043.java", "base_sample_id": "source-1490d31dddff764b", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/math/DoubleUtils.java", "interference": "lower-for-to-while", "level": 13, "line_count": 119, "local_path": "control-flow/lower-for-to-while/I13__google-guava__DoubleUtils__ab3191b3.java", "order": 13, "original_content_sha256": "d9fe7d2ce21670055c842bcf72c80d35008ae39aa9d39f3682a4bbbbbfc064d0", "parent_variant_id": "int-ace67483c043-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/math/DoubleUtils.java#L31-L135", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "DoubleUtils", "variant_id": "int-5848ab3191b3-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 448, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-591b5fdd2bbc-SRC", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n/**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection {\n\n  /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(Class<?> clazz) {\n    return getPackageName(clazz.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(String classFullName) {\n    int lastDot = classFullName.lastIndexOf('.');\n    return (lastDot < 0) ? \"\" : classFullName.substring(0, lastDot);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void initialize(Class<?>... classes) {\n    for (Class<?> clazz : classes) {\n      try {\n        Class.forName(clazz.getName(), true, clazz.getClassLoader());\n      } catch (ClassNotFoundException e) {\n        throw new AssertionError(e);\n      }\n    }\n  }\n\n  /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T newProxy(Class<T> interfaceType, InvocationHandler handler) {\n    checkNotNull(handler);\n    checkArgument(interfaceType.isInterface(), \"%s is not an interface\", interfaceType);\n    Object object =\n        Proxy.newProxyInstance(\n            interfaceType.getClassLoader(), new Class<?>[] {interfaceType}, handler);\n    return interfaceType.cast(object);\n  }\n\n  private Reflection() {}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": null, "level": 0, "line_count": 73, "local_path": "source-original/SRC__google-guava__Reflection__5fdd2bbc.java", "order": 0, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-591b5fdd2bbc-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 617, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-778b126c83bc-I01", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n\n\n\n\n\npublic final class Reflection {\n\n  \n\n\n\n\n  public static String getPackageName(Class<?> clazz) {\n    return getPackageName(clazz.getName());\n  }\n\n  \n\n\n\n\n  public static String getPackageName(String classFullName) {\n    int lastDot = classFullName.lastIndexOf('.');\n    return (lastDot < 0) ? \"\" : classFullName.substring(0, lastDot);\n  }\n\n  \n\n\n\n\n\n\n\n\n\n\n  public static void initialize(Class<?>... classes) {\n    for (Class<?> clazz : classes) {\n      try {\n        Class.forName(clazz.getName(), true, clazz.getClassLoader());\n      } catch (ClassNotFoundException e) {\n        throw new AssertionError(e);\n      }\n    }\n  }\n\n  \n\n\n\n\n\n\n\n\n  public static <T> T newProxy(Class<T> interfaceType, InvocationHandler handler) {\n    checkNotNull(handler);\n    checkArgument(interfaceType.isInterface(), \"%s is not an interface\", interfaceType);\n    Object object =\n        Proxy.newProxyInstance(\n            interfaceType.getClassLoader(), new Class<?>[] {interfaceType}, handler);\n    return interfaceType.cast(object);\n  }\n\n  private Reflection() {}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "a8f88070d012292724fa862048ab1d7140cbdb31ed90ae49b299282c1d4211e5", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "remove-comments", "level": 1, "line_count": 73, "local_path": "comments/remove-comments/I01__google-guava__Reflection__126c83bc.java", "order": 1, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1635, "comments_removed": 5}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-778b126c83bc-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 618, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0c3f29a0103c-I02", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n/**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection {\n\n  /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String get(Class<?> cla) {\n    return get(cla.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String get(String class2) {\n    int last = class2.lastIndexOf('.');\n    return (last < 0) ? \"\" : class2.substring(0, last);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void ini(Class<?>... cla2) {\n    for (Class<?> cla3 : cla2) {\n      try {\n        Class.forName(cla3.getName(), true, cla3.getClassLoader());\n      } catch (ClassNotFoundException e) {\n        throw new AssertionError(e);\n      }\n    }\n  }\n\n  /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T new2(Class<T> interface2, InvocationHandler han) {\n    checkNotNull(han);\n    checkArgument(interface2.isInterface(), \"%s is not an interface\", interface2);\n    Object obj =\n        Proxy.newProxyInstance(\n            interface2.getClassLoader(), new Class<?>[] {interface2}, han);\n    return interface2.cast(obj);\n  }\n\n  private Reflection() {}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "398626dff1c76acb1b99917e7f337b616f01e99e5d03182b29bf020c96a9c9cb", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "shorten-identifiers", "level": 2, "line_count": 73, "local_path": "identifiers/shorten-identifiers/I02__google-guava__Reflection__29a0103c.java", "order": 2, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 17, "identifiers_declared": 9, "local_name_collisions_avoided": 4, "method_calls_renamed": 1, "method_declarations_renamed": 4, "method_name_collisions_avoided": 1, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-0c3f29a0103c-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 619, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-108c9693867f-I03", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n/**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection {\n\n  /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String validateConfig(Class<?> price) {\n    return validateConfig(price.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String validateConfig(String defaultBuffer) {\n    int history = defaultBuffer.lastIndexOf('.');\n    return (history < 0) ? \"\" : defaultBuffer.substring(0, history);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void updateData(Class<?>... profile) {\n    for (Class<?> score : profile) {\n      try {\n        Class.forName(score.getName(), true, score.getClassLoader());\n      } catch (ClassNotFoundException key) {\n        throw new AssertionError(key);\n      }\n    }\n  }\n\n  /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T readPath(Class<T> recentRequest, InvocationHandler message) {\n    checkNotNull(message);\n    checkArgument(recentRequest.isInterface(), \"%s is not an interface\", recentRequest);\n    Object buffer =\n        Proxy.newProxyInstance(\n            recentRequest.getClassLoader(), new Class<?>[] {recentRequest}, message);\n    return recentRequest.cast(buffer);\n  }\n\n  private Reflection() {}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "de61174bbce08f760fe38a0b3268f69995d21aa23575dab4af5dd77969007bfc", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "mislead-identifiers", "level": 3, "line_count": 73, "local_path": "identifiers/mislead-identifiers/I03__google-guava__Reflection__9693867f.java", "order": 3, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 17, "identifiers_declared": 9, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 8, "local_random_pool_selections": 9, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 1, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 3, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-108c9693867f-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 620, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9035291e0a97-I04", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n/**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection {\n\n  /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String a(Class<?> a) {\n    return a(a.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String a(String b) {\n    int c = b.lastIndexOf('.');\n    return (c < 0) ? \"\" : b.substring(0, c);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void b(Class<?>... d) {\n    for (Class<?> f : d) {\n      try {\n        Class.forName(f.getName(), true, f.getClassLoader());\n      } catch (ClassNotFoundException e) {\n        throw new AssertionError(e);\n      }\n    }\n  }\n\n  /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T c(Class<T> g, InvocationHandler h) {\n    checkNotNull(h);\n    checkArgument(g.isInterface(), \"%s is not an interface\", g);\n    Object i =\n        Proxy.newProxyInstance(\n            g.getClassLoader(), new Class<?>[] {g}, h);\n    return g.cast(i);\n  }\n\n  private Reflection() {}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "934c3e138a28fa0d93bd58c9dc99c492260cbdedef6c731c73904013d5126b80", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "garble-identifiers", "level": 4, "line_count": 73, "local_path": "identifiers/garble-identifiers/I04__google-guava__Reflection__291e0a97.java", "order": 4, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 17, "identifiers_declared": 9, "local_name_collisions_avoided": 0, "method_calls_renamed": 1, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-9035291e0a97-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 621, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4682d20b1569-I05", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n/**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection {\n\n  /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(Class<?> clazz) {\n    return getPackageName(clazz.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(String classFullName) {\n    int lastDot = classFullName.lastIndexOf('.');\n    return (lastDot < 0x0) ? \"\" : classFullName.substring(0x0, lastDot);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void initialize(Class<?>... classes) {\n    for (Class<?> clazz : classes) {\n      try {\n        Class.forName(clazz.getName(), true, clazz.getClassLoader());\n      } catch (ClassNotFoundException e) {\n        throw new AssertionError(e);\n      }\n    }\n  }\n\n  /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T newProxy(Class<T> interfaceType, InvocationHandler handler) {\n    checkNotNull(handler);\n    checkArgument(interfaceType.isInterface(), \"%s is not an interface\", interfaceType);\n    Object object =\n        Proxy.newProxyInstance(\n            interfaceType.getClassLoader(), new Class<?>[] {interfaceType}, handler);\n    return interfaceType.cast(object);\n  }\n\n  private Reflection() {}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "abdb25372407494edd88e380ee8e08b65026c8ca94565ddbf774f7c952763a98", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "encode-integer-literals", "level": 5, "line_count": 73, "local_path": "expressions/encode-integer-literals/I05__google-guava__Reflection__d20b1569.java", "order": 5, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 2}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-4682d20b1569-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 622, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5a4f95e5855c-I06", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n/**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection {\n\n  /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(Class<?> clazz) {\n    return getPackageName(clazz.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(String classFullName) {\n    int lastDot = classFullName.lastIndexOf('.');\n    return (lastDot < 0) ? \"\" : classFullName.substring(0, lastDot);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void initialize(Class<?>... classes) {\n    for (Class<?> clazz : classes) {\n      try {\n        Class.forName(clazz.getName(), true, clazz.getClassLoader());\n      } catch (ClassNotFoundException e) {\n        throw new AssertionError(e);\n      }\n    }\n  }\n\n  /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T newProxy(Class<T> interfaceType, InvocationHandler handler) {\n    checkNotNull(handler);\n    checkArgument(interfaceType.isInterface(), \"%s is not an interface\", interfaceType);\n    Object object =\n        Proxy.newProxyInstance(\n            interfaceType.getClassLoader(), new Class<?>[] {interfaceType}, handler);\n    return interfaceType.cast(object);\n  }\n\n  private Reflection() {}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "invert-conditions", "level": 6, "line_count": 73, "local_path": "expressions/invert-conditions/I06__google-guava__Reflection__95e5855c.java", "order": 6, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-5a4f95e5855c-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 623, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-73b5e62edf41-I07", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n/**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection {\n\n  /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(Class<?> clazz) {\nif (((0xECED ^ 0xECED) != 0)) { throw new AssertionError(); }\n\n    return getPackageName(clazz.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(String classFullName) {\nif (((0x1C7B ^ 0x1C7B) != 0)) { throw new AssertionError(); }\n\n    int lastDot = classFullName.lastIndexOf('.');\n    return (lastDot < 0) ? \"\" : classFullName.substring(0, lastDot);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void initialize(Class<?>... classes) {\nif (((0x7E58 ^ 0x7E58) != 0)) { throw new AssertionError(); }\n\n    for (Class<?> clazz : classes) {\n      try {\n        Class.forName(clazz.getName(), true, clazz.getClassLoader());\n      } catch (ClassNotFoundException e) {\n        throw new AssertionError(e);\n      }\n    }\n  }\n\n  /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T newProxy(Class<T> interfaceType, InvocationHandler handler) {\nif (((0xE6A0 ^ 0xE6A0) != 0)) { throw new AssertionError(); }\n\n    checkNotNull(handler);\n    checkArgument(interfaceType.isInterface(), \"%s is not an interface\", interfaceType);\n    Object object =\n        Proxy.newProxyInstance(\n            interfaceType.getClassLoader(), new Class<?>[] {interfaceType}, handler);\n    return interfaceType.cast(object);\n  }\n\n  private Reflection() {\nif (((0x263A ^ 0x263A) != 0)) { throw new AssertionError(); }\n}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "4f4993d4bfec34537cac69eebb5e601299408a994766fdfef1b3786c938619ad", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "insert-dead-branches", "level": 7, "line_count": 83, "local_path": "code-injection/insert-dead-branches/I07__google-guava__Reflection__e62edf41.java", "order": 7, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 5}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-73b5e62edf41-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 624, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2b3c92ff8316-I08", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n/**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection {\n\n  /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(Class<?> clazz) {\n    return getPackageName(clazz.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(String classFullName) {\n    int lastDot = classFullName.lastIndexOf('.');\n    return (lastDot < 0) ? \"\" : classFullName.substring(0, lastDot);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void initialize(Class<?>... classes) {\n    for (Class<?> clazz : classes) {\n      try {\n        Class.forName(clazz.getName(), true, clazz.getClassLoader());\n      } catch (ClassNotFoundException e) {\n        throw new AssertionError(e);\n      }\n    }\n  }\n\n  /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T newProxy(Class<T> interfaceType, InvocationHandler handler) {\n{\n  int startingPosition = 2;\n  int endingPosition = 9;\n  int travelDistance = endingPosition - startingPosition;\n  if (travelDistance < 0) {\n    travelDistance = -travelDistance;\n  }\n}\n\n    checkNotNull(handler);\n    checkArgument(interfaceType.isInterface(), \"%s is not an interface\", interfaceType);\n    Object object =\n        Proxy.newProxyInstance(\n            interfaceType.getClassLoader(), new Class<?>[] {interfaceType}, handler);\n    return interfaceType.cast(object);\n  }\n\n  private Reflection() {}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "732c675c734df5c82bcfa241427ca37c32d73558930f341d6d1df4bb2cf229b5", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 82, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__Reflection__92ff8316.java", "order": 8, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 9}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-2b3c92ff8316-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 625, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-be8ba8940859-I09", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n/**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection {\n\n  /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(Class<?> clazz) {\n    return getPackageName(clazz.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(String classFullName) {\n    int lastDot = classFullName.lastIndexOf('.');\n    return (lastDot < 0) ? \"\" : classFullName.substring(0, lastDot);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void initialize(Class<?>... classes) {\n    for (Class<?> clazz : classes) {\n      try {\n        Class.forName(clazz.getName(), true, clazz.getClassLoader());\n      } catch (ClassNotFoundException e) {\n        throw new AssertionError(e);\n      }\n    }\n  }\n\n  /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T newProxy(Class<T> interfaceType, InvocationHandler handler) {\n    checkNotNull(handler);\n    checkArgument(interfaceType.isInterface(), \"%s is not an interface\", interfaceType);\n    Object object =\n        Proxy.newProxyInstance(\n            interfaceType.getClassLoader(), new Class<?>[] {interfaceType}, handler);\n    return interfaceType.cast(object);\n  }\n\n  private Reflection() {\n{int lI0O_5af96ce7=0x9D8D;lI0O_5af96ce7=((lI0O_5af96ce7^0x9D8D)|0)&-1;if(((lI0O_5af96ce7&1)==1)){lI0O_5af96ce7^=lI0O_5af96ce7;}}\n}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "6714eacc02da5ca5d6f92324d97476e540e8cc2965af1e0bff843ae2b4046066", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 75, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__Reflection__a8940859.java", "order": 9, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-be8ba8940859-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 626, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-14a9939dff89-I10", "source": "package com.google.common.reflect; import static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy; /**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection { /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */ public static String getPackageName(Class<?> clazz) {\n    return getPackageName(clazz.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */ public static String getPackageName(String classFullName) { int lastDot = classFullName.lastIndexOf('.'); return (lastDot < 0) ? \"\" : classFullName.substring(0, lastDot);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void initialize(Class<?>... classes) { for (Class<?> clazz : classes) {\n      try { Class.forName(clazz.getName(), true, clazz.getClassLoader());\n      } catch (ClassNotFoundException e) { throw new AssertionError(e);\n      }\n    }\n  } /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T newProxy(Class<T> interfaceType, InvocationHandler handler) {\n    checkNotNull(handler);\n    checkArgument(interfaceType.isInterface(), \"%s is not an interface\", interfaceType); Object object =\n        Proxy.newProxyInstance(\n            interfaceType.getClassLoader(), new Class<?>[] {interfaceType}, handler);\n    return interfaceType.cast(object); }\n\n  private Reflection() {} }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "fde33340c3dea8adfdda396028455bb1ed88804a0b50bcb209285a6795705bbb", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "partially-compact-layout", "level": 10, "line_count": 56, "local_path": "layout/partially-compact-layout/I10__google-guava__Reflection__939dff89.java", "order": 10, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 36, "line_break_groups_removed": 14, "line_breaks_removed": 17, "whitespace_characters_removed": 45}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-14a9939dff89-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 627, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-613b51616edc-I11", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n/**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection {\n\n  /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(Class<?> clazz) {\n    return getPackageName(clazz.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(String classFullName) {\n    int lastDot = classFullName.lastIndexOf('.');\n    final int a = 1;\n    final int b = -1;\n    final int c = 1;\n    final int d = -1;\n    return (lastDot < (a + b)) ? \"\" : classFullName.substring((c + d), lastDot);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void initialize(Class<?>... classes) {\n    for (Class<?> clazz : classes) {\n      try {\n        Class.forName(clazz.getName(), true, clazz.getClassLoader());\n      } catch (ClassNotFoundException e) {\n        throw new AssertionError(e);\n      }\n    }\n  }\n\n  /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T newProxy(Class<T> interfaceType, InvocationHandler handler) {\n    checkNotNull(handler);\n    checkArgument(interfaceType.isInterface(), \"%s is not an interface\", interfaceType);\n    Object object =\n        Proxy.newProxyInstance(\n            interfaceType.getClassLoader(), new Class<?>[] {interfaceType}, handler);\n    return interfaceType.cast(object);\n  }\n\n  private Reflection() {}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "78502d5a2fcd0bc2f511b089e8b8c2e0105e38cc21845aa82c3f2201bfa7891b", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 77, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__Reflection__51616edc.java", "order": 11, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 2, "intermediate_variables_introduced": 4, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-613b51616edc-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 628, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5f615ece9bde-I12", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n/**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection {\n\n  /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(Class<?> clazz) {\n    return getPackageName(clazz.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(String classFullName) {\n    int lastDot = classFullName.lastIndexOf('.');\n    return (lastDot < 0) ? \"\" : classFullName.substring(0, lastDot);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void initialize(Class<?>... classes) {\n    for (Class<?> clazz : classes) {\n      try {\n        Class.forName(clazz.getName(), true, clazz.getClassLoader());\n      } catch (ClassNotFoundException e) {\n        throw new AssertionError(e);\n      }\n    }\n  }\n\n  /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T newProxy(Class<T> interfaceType, InvocationHandler handler) {\n    checkNotNull(handler);\n    checkArgument(interfaceType.isInterface(), \"%s is not an interface\", interfaceType);\n    \n    return interfaceType.cast((Proxy.newProxyInstance(\n            interfaceType.getClassLoader(), new Class<?>[] {interfaceType}, handler)));\n  }\n\n  private Reflection() {}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6b20754e4be59a8799875ff20ab5eb478a559050f336fbfe9715e4a79656a604", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 72, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__Reflection__5ece9bde.java", "order": 12, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-5f615ece9bde-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 629, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-35cfbc14f0e2-I13", "source": "package com.google.common.reflect;\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Proxy;\n\n/**\n * Static utilities relating to Java reflection.\n *\n * @since 12.0\n */\npublic final class Reflection {\n\n  /**\n   * Returns the package name of {@code clazz} according to the Java Language Specification (section\n   * 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(Class<?> clazz) {\n    return getPackageName(clazz.getName());\n  }\n\n  /**\n   * Returns the package name of {@code classFullName} according to the Java Language Specification\n   * (section 6.7). Unlike {@link Class#getPackage}, this method only parses the class name, without\n   * attempting to define the {@link Package} and hence load files.\n   */\n  public static String getPackageName(String classFullName) {\n    int lastDot = classFullName.lastIndexOf('.');\n    return (lastDot < 0) ? \"\" : classFullName.substring(0, lastDot);\n  }\n\n  /**\n   * Ensures that the given classes are initialized, as described in <a\n   * href=\"http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.2\">JLS Section\n   * 12.4.2</a>.\n   *\n   * <p>WARNING: Normally it's a smell if a class needs to be explicitly initialized, because static\n   * state hurts system maintainability and testability. In cases when you have no choice while\n   * interoperating with a legacy framework, this method helps to keep the code less ugly.\n   *\n   * @throws ExceptionInInitializerError if an exception is thrown during initialization of a class\n   */\n  public static void initialize(Class<?>... classes) {\n    {\n      Class<?>[] loopArray = classes;\n      int loopIndex = 0;\n      while (loopIndex < loopArray.length) {\n        Class<?> clazz = loopArray[loopIndex++];\n        try {\n          Class.forName(clazz.getName(), true, clazz.getClassLoader());\n        } catch (ClassNotFoundException e) {\n          throw new AssertionError(e);\n        }\n      }\n    }\n  }\n\n  /**\n   * Returns a proxy instance that implements {@code interfaceType} by dispatching method\n   * invocations to {@code handler}. The class loader of {@code interfaceType} will be used to\n   * define the proxy class. To implement multiple interfaces or specify a class loader, use {@link\n   * Proxy#newProxyInstance}.\n   *\n   * @throws IllegalArgumentException if {@code interfaceType} does not specify the type of a Java\n   *     interface\n   */\n  public static <T> T newProxy(Class<T> interfaceType, InvocationHandler handler) {\n    checkNotNull(handler);\n    checkArgument(interfaceType.isInterface(), \"%s is not an interface\", interfaceType);\n    Object object =\n        Proxy.newProxyInstance(\n            interfaceType.getClassLoader(), new Class<?>[] {interfaceType}, handler);\n    return interfaceType.cast(object);\n  }\n\n  private Reflection() {}\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__Reflection__5fdd2bbc.java", "base_sample_id": "source-98247e7ad4929823", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c096c7962cfe6268f9b95e44dd594187d7f78fa51705afaef8f15ad7e717e2d6", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/reflect/Reflection.java", "interference": "lower-for-to-while", "level": 13, "line_count": 78, "local_path": "control-flow/lower-for-to-while/I13__google-guava__Reflection__bc14f0e2.java", "order": 13, "original_content_sha256": "bf3c038e15407030892646c368ce8673bd6098a8e3806eab241abac878449f68", "parent_variant_id": "int-591b5fdd2bbc-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/reflect/Reflection.java#L23-L89", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 1, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "Reflection", "variant_id": "int-35cfbc14f0e2-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 630, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5d92074e0d2b-SRC", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService delegate) {\n    this.delegate = checkNotNull(delegate);\n  }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable);\n\n  /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */\n  protected Runnable wrapTask(Runnable command) {\n    Callable<Object> wrapped = wrapTask(callable(command, null));\n    return () -> {\n      try {\n        wrapped.call();\n      } catch (Exception e) {\n        restoreInterruptIfIsInterruptedException(e);\n        throwIfUnchecked(e);\n        throw new RuntimeException(e);\n      }\n    };\n  }\n\n  /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(\n      Collection<? extends Callable<T>> tasks) {\n    ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder();\n    for (Callable<T> task : tasks) {\n      builder.add(wrapTask(task));\n    }\n    return builder.build();\n  }\n\n  // These methods wrap before delegating.\n  @Override\n  public final void execute(Runnable command) {\n    delegate.execute(wrapTask(command));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) {\n    return delegate.submit(wrapTask(checkNotNull(task)));\n  }\n\n  @Override\n  public final Future<?> submit(Runnable task) {\n    return delegate.submit(wrapTask(task));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(\n      Runnable task, @ParametricNullness T result) {\n    return delegate.submit(wrapTask(task), result);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks) throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks), timeout, unit);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException, ExecutionException, TimeoutException {\n    return delegate.invokeAny(wrapTasks(tasks), timeout, unit);\n  }\n\n  // The remaining methods just delegate.\n\n  @Override\n  public final void shutdown() {\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> shutdownNow() {\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean isShutdown() {\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean isTerminated() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n    return delegate.awaitTermination(timeout, unit);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": null, "level": 0, "line_count": 151, "local_path": "source-original/SRC__google-guava__WrappingExecutorService__074e0d2b.java", "order": 0, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": null, "readability_direction": "baseline", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-5d92074e0d2b-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 687, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-66a35450a031-I01", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n\n\n\n\n\n\n\n\n\n\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService delegate) {\n    this.delegate = checkNotNull(delegate);\n  }\n\n  \n\n\n\n  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable);\n\n  \n\n\n\n  protected Runnable wrapTask(Runnable command) {\n    Callable<Object> wrapped = wrapTask(callable(command, null));\n    return () -> {\n      try {\n        wrapped.call();\n      } catch (Exception e) {\n        restoreInterruptIfIsInterruptedException(e);\n        throwIfUnchecked(e);\n        throw new RuntimeException(e);\n      }\n    };\n  }\n\n  \n\n\n\n\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(\n      Collection<? extends Callable<T>> tasks) {\n    ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder();\n    for (Callable<T> task : tasks) {\n      builder.add(wrapTask(task));\n    }\n    return builder.build();\n  }\n\n   \n  @Override\n  public final void execute(Runnable command) {\n    delegate.execute(wrapTask(command));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) {\n    return delegate.submit(wrapTask(checkNotNull(task)));\n  }\n\n  @Override\n  public final Future<?> submit(Runnable task) {\n    return delegate.submit(wrapTask(task));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(\n      Runnable task, @ParametricNullness T result) {\n    return delegate.submit(wrapTask(task), result);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks) throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks), timeout, unit);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException, ExecutionException, TimeoutException {\n    return delegate.invokeAny(wrapTasks(tasks), timeout, unit);\n  }\n\n   \n\n  @Override\n  public final void shutdown() {\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> shutdownNow() {\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean isShutdown() {\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean isTerminated() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n    return delegate.awaitTermination(timeout, unit);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "ec9b161ebb5ad40d23b8306ae6a4a4790bf2ef74ee19cfda1a314af3c261deef", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "remove-comments", "level": 1, "line_count": 151, "local_path": "comments/remove-comments/I01__google-guava__WrappingExecutorService__5450a031.java", "order": 1, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 912, "comments_removed": 6}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-66a35450a031-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 688, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0f8a2d75eb14-I02", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService del) {\n    this.delegate = checkNotNull(del);\n  }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> wrap(Callable<T> cal);\n\n  /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */\n  protected Runnable wrap(Runnable com2) {\n    Callable<Object> wra = wrap(callable(com2, null));\n    return () -> {\n      try {\n        wra.call();\n      } catch (Exception e) {\n        restoreInterruptIfIsInterruptedException(e);\n        throwIfUnchecked(e);\n        throw new RuntimeException(e);\n      }\n    };\n  }\n\n  /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrap2(\n      Collection<? extends Callable<T>> tas) {\n    ImmutableList.Builder<Callable<T>> bui = ImmutableList.builder();\n    for (Callable<T> tas2 : tas) {\n      bui.add(wrap(tas2));\n    }\n    return bui.build();\n  }\n\n  // These methods wrap before delegating.\n  @Override\n  public final void exe(Runnable com3) {\n    delegate.execute(wrap(com3));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> sub(Callable<T> tas3) {\n    return delegate.submit(wrap(checkNotNull(tas3)));\n  }\n\n  @Override\n  public final Future<?> sub(Runnable tas4) {\n    return delegate.submit(wrap(tas4));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> sub(\n      Runnable tas5, @ParametricNullness T res) {\n    return delegate.submit(wrap(tas5), res);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invoke(\n      Collection<? extends Callable<T>> tas6) throws InterruptedException {\n    return delegate.invokeAll(wrap2(tas6));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invoke(\n      Collection<? extends Callable<T>> tas7, long tim, TimeUnit uni)\n      throws InterruptedException {\n    return delegate.invokeAll(wrap2(tas7), tim, uni);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invoke2(Collection<? extends Callable<T>> tas8)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(wrap2(tas8));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invoke2(\n      Collection<? extends Callable<T>> tas9, long tim2, TimeUnit uni2)\n      throws InterruptedException, ExecutionException, TimeoutException {\n    return delegate.invokeAny(wrap2(tas9), tim2, uni2);\n  }\n\n  // The remaining methods just delegate.\n\n  @Override\n  public final void shu() {\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> shutdown() {\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean is() {\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean is2() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean await(long tim3, TimeUnit uni3) throws InterruptedException {\n    return delegate.awaitTermination(tim3, uni3);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "966a56c61b56ae0e5bacbdf7c0e780eb341a0e27efcb62939f9e818576ea4c83", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "shorten-identifiers", "level": 2, "line_count": 151, "local_path": "identifiers/shorten-identifiers/I02__google-guava__WrappingExecutorService__2d75eb14.java", "order": 2, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 25, "identifiers_declared": 23, "local_name_collisions_avoided": 14, "method_calls_renamed": 10, "method_declarations_renamed": 16, "method_name_collisions_avoided": 3, "method_name_groups": 11}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-0f8a2d75eb14-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 689, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2e311f2f3220-I03", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService category) {\n    this.delegate = checkNotNull(category);\n  }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> download(Callable<T> localKey);\n\n  /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */\n  protected Runnable download(Runnable invoice) {\n    Callable<Object> feature = download(callable(invoice, null));\n    return () -> {\n      try {\n        feature.call();\n      } catch (Exception key) {\n        restoreInterruptIfIsInterruptedException(key);\n        throwIfUnchecked(key);\n        throw new RuntimeException(key);\n      }\n    };\n  }\n\n  /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> parseNode(\n      Collection<? extends Callable<T>> value) {\n    ImmutableList.Builder<Callable<T>> profile = ImmutableList.builder();\n    for (Callable<T> data : value) {\n      profile.add(download(data));\n    }\n    return profile.build();\n  }\n\n  // These methods wrap before delegating.\n  @Override\n  public final void receive(Runnable nextKey) {\n    delegate.execute(download(nextKey));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> delete(Callable<T> node) {\n    return delegate.submit(download(checkNotNull(node)));\n  }\n\n  @Override\n  public final Future<?> delete(Runnable path) {\n    return delegate.submit(download(path));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> delete(\n      Runnable item, @ParametricNullness T option) {\n    return delegate.submit(download(item), option);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> readCount(\n      Collection<? extends Callable<T>> order) throws InterruptedException {\n    return delegate.invokeAll(parseNode(order));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> readCount(\n      Collection<? extends Callable<T>> event, long message, TimeUnit mode)\n      throws InterruptedException {\n    return delegate.invokeAll(parseNode(event), message, mode);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T loadScore(Collection<? extends Callable<T>> batch)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(parseNode(batch));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T loadScore(\n      Collection<? extends Callable<T>> token, long channel, TimeUnit date)\n      throws InterruptedException, ExecutionException, TimeoutException {\n    return delegate.invokeAny(parseNode(token), channel, date);\n  }\n\n  // The remaining methods just delegate.\n\n  @Override\n  public final void saveData() {\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> readAddress() {\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean fetchState() {\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean createWindow() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean validateSession(long balance, TimeUnit size) throws InterruptedException {\n    return delegate.awaitTermination(balance, size);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "c1fe7100da7d5ed0ff4e1b2cbb8fbc1815ed54c1f0a230df076a9930255648c6", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "mislead-identifiers", "level": 3, "line_count": 151, "local_path": "identifiers/mislead-identifiers/I03__google-guava__WrappingExecutorService__1f2f3220.java", "order": 3, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 25, "identifiers_declared": 23, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 9, "local_exact_length_matches": 22, "local_random_pool_selections": 23, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 10, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 16, "method_exact_length_matches": 10, "method_name_groups": 11, "method_random_pool_selections": 11, "method_total_length_difference": 1}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-2e311f2f3220-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 690, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c45a585828b5-I04", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService a) {\n    this.delegate = checkNotNull(a);\n  }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> a(Callable<T> b);\n\n  /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */\n  protected Runnable a(Runnable c) {\n    Callable<Object> d = a(callable(c, null));\n    return () -> {\n      try {\n        d.call();\n      } catch (Exception e) {\n        restoreInterruptIfIsInterruptedException(e);\n        throwIfUnchecked(e);\n        throw new RuntimeException(e);\n      }\n    };\n  }\n\n  /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> b(\n      Collection<? extends Callable<T>> f) {\n    ImmutableList.Builder<Callable<T>> g = ImmutableList.builder();\n    for (Callable<T> h : f) {\n      g.add(a(h));\n    }\n    return g.build();\n  }\n\n  // These methods wrap before delegating.\n  @Override\n  public final void c(Runnable i) {\n    delegate.execute(a(i));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> d(Callable<T> j) {\n    return delegate.submit(a(checkNotNull(j)));\n  }\n\n  @Override\n  public final Future<?> d(Runnable k) {\n    return delegate.submit(a(k));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> d(\n      Runnable l, @ParametricNullness T m) {\n    return delegate.submit(a(l), m);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> e(\n      Collection<? extends Callable<T>> n) throws InterruptedException {\n    return delegate.invokeAll(b(n));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> e(\n      Collection<? extends Callable<T>> o, long p, TimeUnit q)\n      throws InterruptedException {\n    return delegate.invokeAll(b(o), p, q);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T f(Collection<? extends Callable<T>> r)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(b(r));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T f(\n      Collection<? extends Callable<T>> s, long t, TimeUnit u)\n      throws InterruptedException, ExecutionException, TimeoutException {\n    return delegate.invokeAny(b(s), t, u);\n  }\n\n  // The remaining methods just delegate.\n\n  @Override\n  public final void g() {\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> h() {\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean i() {\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean j() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean k(long v, TimeUnit w) throws InterruptedException {\n    return delegate.awaitTermination(v, w);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "1f8798bde32db3f1aab23e16a568212e504cfaa9b3f2e1ec56317d36c41fa2b8", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "garble-identifiers", "level": 4, "line_count": 151, "local_path": "identifiers/garble-identifiers/I04__google-guava__WrappingExecutorService__585828b5.java", "order": 4, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 25, "identifiers_declared": 23, "local_name_collisions_avoided": 0, "method_calls_renamed": 10, "method_declarations_renamed": 16, "method_name_collisions_avoided": 0, "method_name_groups": 11}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-c45a585828b5-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 691, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8e6b62b41411-I05", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService delegate) {\n    this.delegate = checkNotNull(delegate);\n  }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable);\n\n  /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */\n  protected Runnable wrapTask(Runnable command) {\n    Callable<Object> wrapped = wrapTask(callable(command, null));\n    return () -> {\n      try {\n        wrapped.call();\n      } catch (Exception e) {\n        restoreInterruptIfIsInterruptedException(e);\n        throwIfUnchecked(e);\n        throw new RuntimeException(e);\n      }\n    };\n  }\n\n  /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(\n      Collection<? extends Callable<T>> tasks) {\n    ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder();\n    for (Callable<T> task : tasks) {\n      builder.add(wrapTask(task));\n    }\n    return builder.build();\n  }\n\n  // These methods wrap before delegating.\n  @Override\n  public final void execute(Runnable command) {\n    delegate.execute(wrapTask(command));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) {\n    return delegate.submit(wrapTask(checkNotNull(task)));\n  }\n\n  @Override\n  public final Future<?> submit(Runnable task) {\n    return delegate.submit(wrapTask(task));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(\n      Runnable task, @ParametricNullness T result) {\n    return delegate.submit(wrapTask(task), result);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks) throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks), timeout, unit);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException, ExecutionException, TimeoutException {\n    return delegate.invokeAny(wrapTasks(tasks), timeout, unit);\n  }\n\n  // The remaining methods just delegate.\n\n  @Override\n  public final void shutdown() {\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> shutdownNow() {\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean isShutdown() {\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean isTerminated() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n    return delegate.awaitTermination(timeout, unit);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "encode-integer-literals", "level": 5, "line_count": 151, "local_path": "expressions/encode-integer-literals/I05__google-guava__WrappingExecutorService__62b41411.java", "order": 5, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-8e6b62b41411-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 692, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-56f46448fd54-I06", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService delegate) {\n    this.delegate = checkNotNull(delegate);\n  }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable);\n\n  /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */\n  protected Runnable wrapTask(Runnable command) {\n    Callable<Object> wrapped = wrapTask(callable(command, null));\n    return () -> {\n      try {\n        wrapped.call();\n      } catch (Exception e) {\n        restoreInterruptIfIsInterruptedException(e);\n        throwIfUnchecked(e);\n        throw new RuntimeException(e);\n      }\n    };\n  }\n\n  /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(\n      Collection<? extends Callable<T>> tasks) {\n    ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder();\n    for (Callable<T> task : tasks) {\n      builder.add(wrapTask(task));\n    }\n    return builder.build();\n  }\n\n  // These methods wrap before delegating.\n  @Override\n  public final void execute(Runnable command) {\n    delegate.execute(wrapTask(command));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) {\n    return delegate.submit(wrapTask(checkNotNull(task)));\n  }\n\n  @Override\n  public final Future<?> submit(Runnable task) {\n    return delegate.submit(wrapTask(task));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(\n      Runnable task, @ParametricNullness T result) {\n    return delegate.submit(wrapTask(task), result);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks) throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks), timeout, unit);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException, ExecutionException, TimeoutException {\n    return delegate.invokeAny(wrapTasks(tasks), timeout, unit);\n  }\n\n  // The remaining methods just delegate.\n\n  @Override\n  public final void shutdown() {\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> shutdownNow() {\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean isShutdown() {\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean isTerminated() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n    return delegate.awaitTermination(timeout, unit);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "invert-conditions", "level": 6, "line_count": 151, "local_path": "expressions/invert-conditions/I06__google-guava__WrappingExecutorService__6448fd54.java", "order": 6, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-56f46448fd54-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 693, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-176962dfc2c5-I07", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService delegate) {\nif (((0xCA7E ^ 0xCA7E) != 0)) { throw new AssertionError(); }\n\n    this.delegate = checkNotNull(delegate);\n  }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable);\n\n  /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */\n  protected Runnable wrapTask(Runnable command) {\nif (((0x53C1 ^ 0x53C1) != 0)) { throw new AssertionError(); }\n\n    Callable<Object> wrapped = wrapTask(callable(command, null));\n    return () -> {\n      try {\n        wrapped.call();\n      } catch (Exception e) {\n        restoreInterruptIfIsInterruptedException(e);\n        throwIfUnchecked(e);\n        throw new RuntimeException(e);\n      }\n    };\n  }\n\n  /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(\n      Collection<? extends Callable<T>> tasks) {\nif (((0xF05 ^ 0xF05) != 0)) { throw new AssertionError(); }\n\n    ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder();\n    for (Callable<T> task : tasks) {\n      builder.add(wrapTask(task));\n    }\n    return builder.build();\n  }\n\n  // These methods wrap before delegating.\n  @Override\n  public final void execute(Runnable command) {\nif (((0x124F ^ 0x124F) != 0)) { throw new AssertionError(); }\n\n    delegate.execute(wrapTask(command));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) {\nif (((0x8CD6 ^ 0x8CD6) != 0)) { throw new AssertionError(); }\n\n    return delegate.submit(wrapTask(checkNotNull(task)));\n  }\n\n  @Override\n  public final Future<?> submit(Runnable task) {\nif (((0x359F ^ 0x359F) != 0)) { throw new AssertionError(); }\n\n    return delegate.submit(wrapTask(task));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(\n      Runnable task, @ParametricNullness T result) {\nif (((0x8813 ^ 0x8813) != 0)) { throw new AssertionError(); }\n\n    return delegate.submit(wrapTask(task), result);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks) throws InterruptedException {\nif (((0x26C3 ^ 0x26C3) != 0)) { throw new AssertionError(); }\n\n    return delegate.invokeAll(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException {\nif (((0x914E ^ 0x914E) != 0)) { throw new AssertionError(); }\n\n    return delegate.invokeAll(wrapTasks(tasks), timeout, unit);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)\n      throws InterruptedException, ExecutionException {\nif (((0x833E ^ 0x833E) != 0)) { throw new AssertionError(); }\n\n    return delegate.invokeAny(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException, ExecutionException, TimeoutException {\nif (((0x7F65 ^ 0x7F65) != 0)) { throw new AssertionError(); }\n\n    return delegate.invokeAny(wrapTasks(tasks), timeout, unit);\n  }\n\n  // The remaining methods just delegate.\n\n  @Override\n  public final void shutdown() {\nif (((0x8518 ^ 0x8518) != 0)) { throw new AssertionError(); }\n\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> shutdownNow() {\nif (((0x42C9 ^ 0x42C9) != 0)) { throw new AssertionError(); }\n\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean isShutdown() {\nif (((0x3965 ^ 0x3965) != 0)) { throw new AssertionError(); }\n\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean isTerminated() {\nif (((0xAAAB ^ 0xAAAB) != 0)) { throw new AssertionError(); }\n\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\nif (((0x26C1 ^ 0x26C1) != 0)) { throw new AssertionError(); }\n\n    return delegate.awaitTermination(timeout, unit);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "022f0eaa313b2375679948e5418a1c208ab191419875beeaaf151c2f66197bf4", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "insert-dead-branches", "level": 7, "line_count": 183, "local_path": "code-injection/insert-dead-branches/I07__google-guava__WrappingExecutorService__62dfc2c5.java", "order": 7, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 16}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-176962dfc2c5-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 694, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-995b4fca277d-I08", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService delegate) {\n    this.delegate = checkNotNull(delegate);\n  }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable);\n\n  /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */\n  protected Runnable wrapTask(Runnable command) {\n    Callable<Object> wrapped = wrapTask(callable(command, null));\n    return () -> {\n      try {\n        wrapped.call();\n      } catch (Exception e) {\n        restoreInterruptIfIsInterruptedException(e);\n        throwIfUnchecked(e);\n        throw new RuntimeException(e);\n      }\n    };\n  }\n\n  /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(\n      Collection<? extends Callable<T>> tasks) {\n    ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder();\n    for (Callable<T> task : tasks) {\n      builder.add(wrapTask(task));\n    }\n    return builder.build();\n  }\n\n  // These methods wrap before delegating.\n  @Override\n  public final void execute(Runnable command) {\n    delegate.execute(wrapTask(command));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) {\n    return delegate.submit(wrapTask(checkNotNull(task)));\n  }\n\n  @Override\n  public final Future<?> submit(Runnable task) {\n    return delegate.submit(wrapTask(task));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(\n      Runnable task, @ParametricNullness T result) {\n    return delegate.submit(wrapTask(task), result);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks) throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks), timeout, unit);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException, ExecutionException, TimeoutException {\n{\n  int factorial = 1;\n  for (int currentFactor = 2; currentFactor <= 4; currentFactor++) {\n    factorial *= currentFactor;\n  }\n}\n\n    return delegate.invokeAny(wrapTasks(tasks), timeout, unit);\n  }\n\n  // The remaining methods just delegate.\n\n  @Override\n  public final void shutdown() {\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> shutdownNow() {\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean isShutdown() {\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean isTerminated() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n    return delegate.awaitTermination(timeout, unit);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "26cdac8def876a38fc76e121e13582a86c1d66d156babb7837009c083e84601c", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 158, "local_path": "code-injection/inject-readable-unrelated-code/I08__google-guava__WrappingExecutorService__4fca277d.java", "order": 8, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 6}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-995b4fca277d-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 695, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2ad4fc87c293-I09", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService delegate) {\n    this.delegate = checkNotNull(delegate);\n  }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable);\n\n  /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */\n  protected Runnable wrapTask(Runnable command) {\n    Callable<Object> wrapped = wrapTask(callable(command, null));\n    return () -> {\n      try {\n        wrapped.call();\n      } catch (Exception e) {\n        restoreInterruptIfIsInterruptedException(e);\n        throwIfUnchecked(e);\n        throw new RuntimeException(e);\n      }\n    };\n  }\n\n  /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(\n      Collection<? extends Callable<T>> tasks) {\n    ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder();\n    for (Callable<T> task : tasks) {\n      builder.add(wrapTask(task));\n    }\n    return builder.build();\n  }\n\n  // These methods wrap before delegating.\n  @Override\n  public final void execute(Runnable command) {\n    delegate.execute(wrapTask(command));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) {\n    return delegate.submit(wrapTask(checkNotNull(task)));\n  }\n\n  @Override\n  public final Future<?> submit(Runnable task) {\n{boolean lI0O_a4e1bf68=((0x90F9^0x90F9)!=0);lI0O_a4e1bf68=!(!lI0O_a4e1bf68);}\n\n    return delegate.submit(wrapTask(task));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(\n      Runnable task, @ParametricNullness T result) {\n    return delegate.submit(wrapTask(task), result);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks) throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks), timeout, unit);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException, ExecutionException, TimeoutException {\n    return delegate.invokeAny(wrapTasks(tasks), timeout, unit);\n  }\n\n  // The remaining methods just delegate.\n\n  @Override\n  public final void shutdown() {\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> shutdownNow() {\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean isShutdown() {\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean isTerminated() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n    return delegate.awaitTermination(timeout, unit);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "656c9c59f05e069b6e7df1f4e3c8a9a4f68c9625629ba0c5d72baf2e81f878db", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 153, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__google-guava__WrappingExecutorService__fc87c293.java", "order": 9, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-2ad4fc87c293-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 696, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1b91328204c7-I10", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException; import static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible; import com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List; import java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future; import java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException; import org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */ @J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService delegate) {\n    this.delegate = checkNotNull(delegate); }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable); /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */ protected Runnable wrapTask(Runnable command) {\n    Callable<Object> wrapped = wrapTask(callable(command, null));\n    return () -> {\n      try { wrapped.call();\n      } catch (Exception e) { restoreInterruptIfIsInterruptedException(e); throwIfUnchecked(e); throw new RuntimeException(e); }\n    };\n  } /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */ private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(\n      Collection<? extends Callable<T>> tasks) { ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder(); for (Callable<T> task : tasks) {\n      builder.add(wrapTask(task)); } return builder.build();\n  } // These methods wrap before delegating.\n  @Override\n  public final void execute(Runnable command) {\n    delegate.execute(wrapTask(command)); }\n\n  @Override public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) { return delegate.submit(wrapTask(checkNotNull(task))); } @Override\n  public final Future<?> submit(Runnable task) { return delegate.submit(wrapTask(task)); } @Override\n  public final <T extends @Nullable Object> Future<T> submit( Runnable task, @ParametricNullness T result) { return delegate.submit(wrapTask(task), result);\n  }\n\n  @Override public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks) throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks));\n  } @Override public final <T extends @Nullable Object> List<Future<T>> invokeAll( Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks), timeout, unit); }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException, ExecutionException, TimeoutException {\n    return delegate.invokeAny(wrapTasks(tasks), timeout, unit);\n  }\n\n  // The remaining methods just delegate.\n @Override\n  public final void shutdown() {\n    delegate.shutdown(); } @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> shutdownNow() { return delegate.shutdownNow();\n  } @Override\n  public final boolean isShutdown() {\n    return delegate.isShutdown();\n  } @Override\n  public final boolean isTerminated() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n    return delegate.awaitTermination(timeout, unit);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "45da63342221b7038fbb83768624548c9907f815613b4ddb0ab4650346638c5c", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "partially-compact-layout", "level": 10, "line_count": 98, "local_path": "layout/partially-compact-layout/I10__google-guava__WrappingExecutorService__328204c7.java", "order": 10, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 111, "line_break_groups_removed": 44, "line_breaks_removed": 53, "whitespace_characters_removed": 139}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-1b91328204c7-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 697, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-db09d0974300-I11", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService delegate) {\n    this.delegate = checkNotNull(delegate);\n  }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable);\n\n  /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */\n  protected Runnable wrapTask(Runnable command) {\n    Callable<Object> wrapped = wrapTask(callable(command, null));\n    return () -> {\n      try {\n        wrapped.call();\n      } catch (Exception e) {\n        restoreInterruptIfIsInterruptedException(e);\n        throwIfUnchecked(e);\n        throw new RuntimeException(e);\n      }\n    };\n  }\n\n  /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(\n      Collection<? extends Callable<T>> tasks) {\n    ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder();\n    for (Callable<T> task : tasks) {\n      builder.add(wrapTask(task));\n    }\n    return builder.build();\n  }\n\n  // These methods wrap before delegating.\n  @Override\n  public final void execute(Runnable command) {\n    delegate.execute(wrapTask(command));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) {\n    return delegate.submit(wrapTask(checkNotNull(task)));\n  }\n\n  @Override\n  public final Future<?> submit(Runnable task) {\n    return delegate.submit(wrapTask(task));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(\n      Runnable task, @ParametricNullness T result) {\n    return delegate.submit(wrapTask(task), result);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks) throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks), timeout, unit);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException, ExecutionException, TimeoutException {\n    return delegate.invokeAny(wrapTasks(tasks), timeout, unit);\n  }\n\n  // The remaining methods just delegate.\n\n  @Override\n  public final void shutdown() {\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> shutdownNow() {\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean isShutdown() {\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean isTerminated() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n    return delegate.awaitTermination(timeout, unit);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 151, "local_path": "data-flow/introduce-numeric-intermediates/I11__google-guava__WrappingExecutorService__d0974300.java", "order": 11, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-db09d0974300-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 698, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eecf914f32e6-I12", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService delegate) {\n    this.delegate = checkNotNull(delegate);\n  }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable);\n\n  /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */\n  protected Runnable wrapTask(Runnable command) {\n    \n    return () -> {\n      try {\n        (wrapTask(callable(command, null))).call();\n      } catch (Exception e) {\n        restoreInterruptIfIsInterruptedException(e);\n        throwIfUnchecked(e);\n        throw new RuntimeException(e);\n      }\n    };\n  }\n\n  /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(\n      Collection<? extends Callable<T>> tasks) {\n    ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder();\n    for (Callable<T> task : tasks) {\n      builder.add(wrapTask(task));\n    }\n    return builder.build();\n  }\n\n  // These methods wrap before delegating.\n  @Override\n  public final void execute(Runnable command) {\n    delegate.execute(wrapTask(command));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) {\n    return delegate.submit(wrapTask(checkNotNull(task)));\n  }\n\n  @Override\n  public final Future<?> submit(Runnable task) {\n    return delegate.submit(wrapTask(task));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(\n      Runnable task, @ParametricNullness T result) {\n    return delegate.submit(wrapTask(task), result);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks) throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks), timeout, unit);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException, ExecutionException, TimeoutException {\n    return delegate.invokeAny(wrapTasks(tasks), timeout, unit);\n  }\n\n  // The remaining methods just delegate.\n\n  @Override\n  public final void shutdown() {\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> shutdownNow() {\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean isShutdown() {\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean isTerminated() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n    return delegate.awaitTermination(timeout, unit);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3cdbb26fec04996f554bbe7e1cb87d183c85e8d29a3e8a9f5f0635918cf80f12", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 151, "local_path": "data-flow/inline-intermediate-variables/I12__google-guava__WrappingExecutorService__914f32e6.java", "order": 12, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-eecf914f32e6-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 699, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-86290b4a127f-I13", "source": "package com.google.common.util.concurrent;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static com.google.common.base.Throwables.throwIfUnchecked;\nimport static com.google.common.util.concurrent.Platform.restoreInterruptIfIsInterruptedException;\nimport static java.util.concurrent.Executors.callable;\nimport com.google.common.annotations.GwtIncompatible;\nimport com.google.common.annotations.J2ktIncompatible;\nimport com.google.common.collect.ImmutableList;\nimport com.google.errorprone.annotations.CanIgnoreReturnValue;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.concurrent.Callable;\nimport java.util.concurrent.ExecutionException;\nimport java.util.concurrent.ExecutorService;\nimport java.util.concurrent.Future;\nimport java.util.concurrent.TimeUnit;\nimport java.util.concurrent.TimeoutException;\nimport org.jspecify.annotations.Nullable;\n\n/**\n * An abstract {@code ExecutorService} that allows subclasses to {@linkplain #wrapTask(Callable)\n * wrap} tasks before they are submitted to the underlying executor.\n *\n * <p>Note that task wrapping may occur even if the task is never executed.\n *\n * <p>For delegation without task-wrapping, see {@link ForwardingExecutorService}.\n *\n * @author Chris Nokleberg\n */\n@J2ktIncompatible\n@GwtIncompatible\nabstract class WrappingExecutorService implements ExecutorService {\n  private final ExecutorService delegate;\n\n  protected WrappingExecutorService(ExecutorService delegate) {\n    this.delegate = checkNotNull(delegate);\n  }\n\n  /**\n   * Wraps a {@code Callable} for submission to the underlying executor. This method is also applied\n   * to any {@code Runnable} passed to the default implementation of {@link #wrapTask(Runnable)}.\n   */\n  protected abstract <T extends @Nullable Object> Callable<T> wrapTask(Callable<T> callable);\n\n  /**\n   * Wraps a {@code Runnable} for submission to the underlying executor. The default implementation\n   * delegates to {@link #wrapTask(Callable)}.\n   */\n  protected Runnable wrapTask(Runnable command) {\n    Callable<Object> wrapped = wrapTask(callable(command, null));\n    return () -> {\n      try {\n        wrapped.call();\n      } catch (Exception e) {\n        restoreInterruptIfIsInterruptedException(e);\n        throwIfUnchecked(e);\n        throw new RuntimeException(e);\n      }\n    };\n  }\n\n  /**\n   * Wraps a collection of tasks.\n   *\n   * @throws NullPointerException if any element of {@code tasks} is null\n   */\n  private <T extends @Nullable Object> ImmutableList<Callable<T>> wrapTasks(\n      Collection<? extends Callable<T>> tasks) {\n    ImmutableList.Builder<Callable<T>> builder = ImmutableList.builder();\n    {\n      java.util.Iterator<?> loopIterator = (tasks).iterator();\n      while (loopIterator.hasNext()) {\n        Callable<T> task = (Callable<T>) loopIterator.next();\n        builder.add(wrapTask(task));\n      }\n    }\n    return builder.build();\n  }\n\n  // These methods wrap before delegating.\n  @Override\n  public final void execute(Runnable command) {\n    delegate.execute(wrapTask(command));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(Callable<T> task) {\n    return delegate.submit(wrapTask(checkNotNull(task)));\n  }\n\n  @Override\n  public final Future<?> submit(Runnable task) {\n    return delegate.submit(wrapTask(task));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> Future<T> submit(\n      Runnable task, @ParametricNullness T result) {\n    return delegate.submit(wrapTask(task), result);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks) throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> List<Future<T>> invokeAll(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException {\n    return delegate.invokeAll(wrapTasks(tasks), timeout, unit);\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(Collection<? extends Callable<T>> tasks)\n      throws InterruptedException, ExecutionException {\n    return delegate.invokeAny(wrapTasks(tasks));\n  }\n\n  @Override\n  public final <T extends @Nullable Object> T invokeAny(\n      Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)\n      throws InterruptedException, ExecutionException, TimeoutException {\n    return delegate.invokeAny(wrapTasks(tasks), timeout, unit);\n  }\n\n  // The remaining methods just delegate.\n\n  @Override\n  public final void shutdown() {\n    delegate.shutdown();\n  }\n\n  @Override\n  @CanIgnoreReturnValue\n  public final List<Runnable> shutdownNow() {\n    return delegate.shutdownNow();\n  }\n\n  @Override\n  public final boolean isShutdown() {\n    return delegate.isShutdown();\n  }\n\n  @Override\n  public final boolean isTerminated() {\n    return delegate.isTerminated();\n  }\n\n  @Override\n  public final boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n    return delegate.awaitTermination(timeout, unit);\n  }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__google-guava__WrappingExecutorService__074e0d2b.java", "base_sample_id": "source-fd8a19a838146553", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6bb7335a067e81deb5ca54a4dd97c9bde1b5a96a271c8dc4520301442fb9ed06", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "google-guava:guava/src/com/google/common/util/concurrent/WrappingExecutorService.java", "interference": "lower-for-to-while", "level": 13, "line_count": 155, "local_path": "control-flow/lower-for-to-while/I13__google-guava__WrappingExecutorService__0b4a127f.java", "order": 13, "original_content_sha256": "5aa6efbd1fa5c480d9e060be28918346e4cba68f39b20b4297009d0027aec9eb", "parent_variant_id": "int-5d92074e0d2b-SRC", "readability_direction": "decreasing", "source": "google-guava", "source_name": "Guava", "source_path": "guava/src/com/google/common/util/concurrent/WrappingExecutorService.java#L36-L167", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 1, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "WrappingExecutorService", "variant_id": "int-86290b4a127f-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 700, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dca37f0a919e-SRC", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int maxCapacity) {\n        super(maxCapacity);\n    }\n\n    @Override\n    final boolean isAccessible() {\n        return isAccessible0();\n    }\n\n    boolean isAccessible0() {\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int refCnt() {\n        return refCnt0();\n    }\n\n    int refCnt0() {\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf retain() {\n        return retain0();\n    }\n\n    ByteBuf retain0() {\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf retain(int increment) {\n        return retain0(increment);\n    }\n\n    ByteBuf retain0(int increment) {\n        unwrap().retain(increment);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch() {\n        return touch0();\n    }\n\n    ByteBuf touch0() {\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch(Object hint) {\n        return touch0(hint);\n    }\n\n    ByteBuf touch0(Object hint) {\n        unwrap().touch(hint);\n        return this;\n    }\n\n    @Override\n    public final boolean release() {\n        return release0();\n    }\n\n    boolean release0() {\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean release(int decrement) {\n        return release0(decrement);\n    }\n\n    boolean release0(int decrement) {\n        return unwrap().release(decrement);\n    }\n\n    @Override\n    public boolean isReadOnly() {\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer internalNioBuffer(int index, int length) {\n        return nioBuffer(index, length);\n    }\n\n    @Override\n    public ByteBuffer nioBuffer(int index, int length) {\n        return unwrap().nioBuffer(index, length);\n    }\n\n    @Override\n    public boolean isContiguous() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": null, "level": 0, "line_count": 112, "local_path": "source-original/SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "order": 0, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-dca37f0a919e-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 701, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-46d6ec1790a4-I01", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n\n\n\n\n\n\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int maxCapacity) {\n        super(maxCapacity);\n    }\n\n    @Override\n    final boolean isAccessible() {\n        return isAccessible0();\n    }\n\n    boolean isAccessible0() {\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int refCnt() {\n        return refCnt0();\n    }\n\n    int refCnt0() {\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf retain() {\n        return retain0();\n    }\n\n    ByteBuf retain0() {\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf retain(int increment) {\n        return retain0(increment);\n    }\n\n    ByteBuf retain0(int increment) {\n        unwrap().retain(increment);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch() {\n        return touch0();\n    }\n\n    ByteBuf touch0() {\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch(Object hint) {\n        return touch0(hint);\n    }\n\n    ByteBuf touch0(Object hint) {\n        unwrap().touch(hint);\n        return this;\n    }\n\n    @Override\n    public final boolean release() {\n        return release0();\n    }\n\n    boolean release0() {\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean release(int decrement) {\n        return release0(decrement);\n    }\n\n    boolean release0(int decrement) {\n        return unwrap().release(decrement);\n    }\n\n    @Override\n    public boolean isReadOnly() {\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer internalNioBuffer(int index, int length) {\n        return nioBuffer(index, length);\n    }\n\n    @Override\n    public ByteBuffer nioBuffer(int index, int length) {\n        return unwrap().nioBuffer(index, length);\n    }\n\n    @Override\n    public boolean isContiguous() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "e71b5460bfcfecc346b8ef57d0e135946e0a4dc5fea50cb6f7d67025d2c03db3", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "remove-comments", "level": 1, "line_count": 112, "local_path": "comments/remove-comments/I01__netty__AbstractDerivedByteBuf__ec1790a4.java", "order": 1, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 129, "comments_removed": 1}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-46d6ec1790a4-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 702, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e67c3d067c0c-I02", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int max) {\n        super(max);\n    }\n\n    @Override\n    final boolean is() {\n        return is2();\n    }\n\n    boolean is2() {\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int ref() {\n        return ref2();\n    }\n\n    int ref2() {\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf ret() {\n        return retain();\n    }\n\n    ByteBuf retain() {\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf ret(int inc) {\n        return retain(inc);\n    }\n\n    ByteBuf retain(int inc2) {\n        unwrap().retain(inc2);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf tou() {\n        return touch();\n    }\n\n    ByteBuf touch() {\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf tou(Object hin) {\n        return touch(hin);\n    }\n\n    ByteBuf touch(Object hin2) {\n        unwrap().touch(hin2);\n        return this;\n    }\n\n    @Override\n    public final boolean rel() {\n        return release();\n    }\n\n    boolean release() {\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean rel(int dec) {\n        return release(dec);\n    }\n\n    boolean release(int dec2) {\n        return unwrap().release(dec2);\n    }\n\n    @Override\n    public boolean is3() {\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer internal(int ind, int len) {\n        return nio(ind, len);\n    }\n\n    @Override\n    public ByteBuffer nio(int ind2, int len2) {\n        return unwrap().nioBuffer(ind2, len2);\n    }\n\n    @Override\n    public boolean is4() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "dee9bb6fe07511ec33b6e7a54b4c4dc49397094bc5678c7b5bb884eae737a1c3", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "shorten-identifiers", "level": 2, "line_count": 112, "local_path": "identifiers/shorten-identifiers/I02__netty__AbstractDerivedByteBuf__3d067c0c.java", "order": 2, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 11, "identifiers_declared": 11, "local_name_collisions_avoided": 5, "method_calls_renamed": 9, "method_declarations_renamed": 20, "method_name_collisions_avoided": 4, "method_name_groups": 14}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-e67c3d067c0c-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 703, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7a42c372e047-I03", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int finalStatus) {\n        super(finalStatus);\n    }\n\n    @Override\n    final boolean removeRecord() {\n        return validateCache();\n    }\n\n    boolean validateCache() {\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int detect() {\n        return contain();\n    }\n\n    int contain() {\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf upload() {\n        return readKey();\n    }\n\n    ByteBuf readKey() {\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf upload(int nextOrder) {\n        return readKey(nextOrder);\n    }\n\n    ByteBuf readKey(int localUser) {\n        unwrap().retain(localUser);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf route() {\n        return verify();\n    }\n\n    ByteBuf verify() {\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf route(Object user) {\n        return verify(user);\n    }\n\n    ByteBuf verify(Object node) {\n        unwrap().touch(node);\n        return this;\n    }\n\n    @Override\n    public final boolean collect() {\n        return sendItem();\n    }\n\n    boolean sendItem() {\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean collect(int localItem) {\n        return sendItem(localItem);\n    }\n\n    boolean sendItem(int finalUser) {\n        return unwrap().release(finalUser);\n    }\n\n    @Override\n    public boolean readStatus() {\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer validateAccount(int cache, int window) {\n        return readBatch(cache, window);\n    }\n\n    @Override\n    public ByteBuffer readBatch(int total, int amount) {\n        return unwrap().nioBuffer(total, amount);\n    }\n\n    @Override\n    public boolean refreshScore() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "af8562ece6a6ca01cb3ff4bc70c471431a0ca8749a7787c16193bde6e7514241", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "mislead-identifiers", "level": 3, "line_count": 112, "local_path": "identifiers/mislead-identifiers/I03__netty__AbstractDerivedByteBuf__c372e047.java", "order": 3, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 11, "identifiers_declared": 11, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 11, "local_random_pool_selections": 11, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 9, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 20, "method_exact_length_matches": 13, "method_name_groups": 14, "method_random_pool_selections": 14, "method_total_length_difference": 2}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-7a42c372e047-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 704, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-306301b8f6eb-I04", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int a) {\n        super(a);\n    }\n\n    @Override\n    final boolean a() {\n        return b();\n    }\n\n    boolean b() {\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int c() {\n        return d();\n    }\n\n    int d() {\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf e() {\n        return f();\n    }\n\n    ByteBuf f() {\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf e(int b) {\n        return f(b);\n    }\n\n    ByteBuf f(int c) {\n        unwrap().retain(c);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf g() {\n        return h();\n    }\n\n    ByteBuf h() {\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf g(Object d) {\n        return h(d);\n    }\n\n    ByteBuf h(Object e) {\n        unwrap().touch(e);\n        return this;\n    }\n\n    @Override\n    public final boolean i() {\n        return j();\n    }\n\n    boolean j() {\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean i(int f) {\n        return j(f);\n    }\n\n    boolean j(int g) {\n        return unwrap().release(g);\n    }\n\n    @Override\n    public boolean k() {\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer l(int h, int i) {\n        return m(h, i);\n    }\n\n    @Override\n    public ByteBuffer m(int j, int k) {\n        return unwrap().nioBuffer(j, k);\n    }\n\n    @Override\n    public boolean n() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "80d7433676b4f75ef9a5ae8b434f19246e6827d7e5cc9d78415e6dd2c93874cd", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "garble-identifiers", "level": 4, "line_count": 112, "local_path": "identifiers/garble-identifiers/I04__netty__AbstractDerivedByteBuf__01b8f6eb.java", "order": 4, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 11, "identifiers_declared": 11, "local_name_collisions_avoided": 0, "method_calls_renamed": 9, "method_declarations_renamed": 20, "method_name_collisions_avoided": 0, "method_name_groups": 14}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-306301b8f6eb-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 705, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9481496649af-I05", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int maxCapacity) {\n        super(maxCapacity);\n    }\n\n    @Override\n    final boolean isAccessible() {\n        return isAccessible0();\n    }\n\n    boolean isAccessible0() {\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int refCnt() {\n        return refCnt0();\n    }\n\n    int refCnt0() {\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf retain() {\n        return retain0();\n    }\n\n    ByteBuf retain0() {\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf retain(int increment) {\n        return retain0(increment);\n    }\n\n    ByteBuf retain0(int increment) {\n        unwrap().retain(increment);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch() {\n        return touch0();\n    }\n\n    ByteBuf touch0() {\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch(Object hint) {\n        return touch0(hint);\n    }\n\n    ByteBuf touch0(Object hint) {\n        unwrap().touch(hint);\n        return this;\n    }\n\n    @Override\n    public final boolean release() {\n        return release0();\n    }\n\n    boolean release0() {\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean release(int decrement) {\n        return release0(decrement);\n    }\n\n    boolean release0(int decrement) {\n        return unwrap().release(decrement);\n    }\n\n    @Override\n    public boolean isReadOnly() {\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer internalNioBuffer(int index, int length) {\n        return nioBuffer(index, length);\n    }\n\n    @Override\n    public ByteBuffer nioBuffer(int index, int length) {\n        return unwrap().nioBuffer(index, length);\n    }\n\n    @Override\n    public boolean isContiguous() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "encode-integer-literals", "level": 5, "line_count": 112, "local_path": "expressions/encode-integer-literals/I05__netty__AbstractDerivedByteBuf__496649af.java", "order": 5, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-9481496649af-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 706, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2f7db9da14db-I06", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int maxCapacity) {\n        super(maxCapacity);\n    }\n\n    @Override\n    final boolean isAccessible() {\n        return isAccessible0();\n    }\n\n    boolean isAccessible0() {\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int refCnt() {\n        return refCnt0();\n    }\n\n    int refCnt0() {\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf retain() {\n        return retain0();\n    }\n\n    ByteBuf retain0() {\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf retain(int increment) {\n        return retain0(increment);\n    }\n\n    ByteBuf retain0(int increment) {\n        unwrap().retain(increment);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch() {\n        return touch0();\n    }\n\n    ByteBuf touch0() {\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch(Object hint) {\n        return touch0(hint);\n    }\n\n    ByteBuf touch0(Object hint) {\n        unwrap().touch(hint);\n        return this;\n    }\n\n    @Override\n    public final boolean release() {\n        return release0();\n    }\n\n    boolean release0() {\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean release(int decrement) {\n        return release0(decrement);\n    }\n\n    boolean release0(int decrement) {\n        return unwrap().release(decrement);\n    }\n\n    @Override\n    public boolean isReadOnly() {\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer internalNioBuffer(int index, int length) {\n        return nioBuffer(index, length);\n    }\n\n    @Override\n    public ByteBuffer nioBuffer(int index, int length) {\n        return unwrap().nioBuffer(index, length);\n    }\n\n    @Override\n    public boolean isContiguous() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "invert-conditions", "level": 6, "line_count": 112, "local_path": "expressions/invert-conditions/I06__netty__AbstractDerivedByteBuf__b9da14db.java", "order": 6, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-2f7db9da14db-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 707, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eb603c1b0d37-I07", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int maxCapacity) {\n        super(maxCapacity);\nif (((0x3935 ^ 0x3935) != 0)) { throw new AssertionError(); }\n\n    }\n\n    @Override\n    final boolean isAccessible() {\nif (((0xD7AF ^ 0xD7AF) != 0)) { throw new AssertionError(); }\n\n        return isAccessible0();\n    }\n\n    boolean isAccessible0() {\nif (((0xF4B3 ^ 0xF4B3) != 0)) { throw new AssertionError(); }\n\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int refCnt() {\nif (((0xFC7C ^ 0xFC7C) != 0)) { throw new AssertionError(); }\n\n        return refCnt0();\n    }\n\n    int refCnt0() {\nif (((0xF866 ^ 0xF866) != 0)) { throw new AssertionError(); }\n\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf retain() {\nif (((0x2C11 ^ 0x2C11) != 0)) { throw new AssertionError(); }\n\n        return retain0();\n    }\n\n    ByteBuf retain0() {\nif (((0x18F ^ 0x18F) != 0)) { throw new AssertionError(); }\n\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf retain(int increment) {\nif (((0x7AF5 ^ 0x7AF5) != 0)) { throw new AssertionError(); }\n\n        return retain0(increment);\n    }\n\n    ByteBuf retain0(int increment) {\nif (((0x6850 ^ 0x6850) != 0)) { throw new AssertionError(); }\n\n        unwrap().retain(increment);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch() {\nif (((0x44C0 ^ 0x44C0) != 0)) { throw new AssertionError(); }\n\n        return touch0();\n    }\n\n    ByteBuf touch0() {\nif (((0xCC23 ^ 0xCC23) != 0)) { throw new AssertionError(); }\n\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch(Object hint) {\nif (((0xBFC4 ^ 0xBFC4) != 0)) { throw new AssertionError(); }\n\n        return touch0(hint);\n    }\n\n    ByteBuf touch0(Object hint) {\nif (((0xE609 ^ 0xE609) != 0)) { throw new AssertionError(); }\n\n        unwrap().touch(hint);\n        return this;\n    }\n\n    @Override\n    public final boolean release() {\nif (((0x8D66 ^ 0x8D66) != 0)) { throw new AssertionError(); }\n\n        return release0();\n    }\n\n    boolean release0() {\nif (((0xE525 ^ 0xE525) != 0)) { throw new AssertionError(); }\n\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean release(int decrement) {\nif (((0xF34C ^ 0xF34C) != 0)) { throw new AssertionError(); }\n\n        return release0(decrement);\n    }\n\n    boolean release0(int decrement) {\nif (((0x6175 ^ 0x6175) != 0)) { throw new AssertionError(); }\n\n        return unwrap().release(decrement);\n    }\n\n    @Override\n    public boolean isReadOnly() {\nif (((0xAE3F ^ 0xAE3F) != 0)) { throw new AssertionError(); }\n\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer internalNioBuffer(int index, int length) {\nif (((0x5FA6 ^ 0x5FA6) != 0)) { throw new AssertionError(); }\n\n        return nioBuffer(index, length);\n    }\n\n    @Override\n    public ByteBuffer nioBuffer(int index, int length) {\nif (((0xF177 ^ 0xF177) != 0)) { throw new AssertionError(); }\n\n        return unwrap().nioBuffer(index, length);\n    }\n\n    @Override\n    public boolean isContiguous() {\nif (((0x28A1 ^ 0x28A1) != 0)) { throw new AssertionError(); }\n\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "fdf212d390305e882b0f3d1b91800b8417744ba93b793d9ae54707ac639679c0", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "insert-dead-branches", "level": 7, "line_count": 154, "local_path": "code-injection/insert-dead-branches/I07__netty__AbstractDerivedByteBuf__3c1b0d37.java", "order": 7, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 21}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-eb603c1b0d37-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 708, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4d3ae8ae49d0-I08", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int maxCapacity) {\n        super(maxCapacity);\n    }\n\n    @Override\n    final boolean isAccessible() {\n        return isAccessible0();\n    }\n\n    boolean isAccessible0() {\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int refCnt() {\n        return refCnt0();\n    }\n\n    int refCnt0() {\n{\n  int runningTotal = 0;\n  for (int currentNumber = 1; currentNumber <= 5; currentNumber++) {\n    runningTotal += currentNumber;\n  }\n}\n\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf retain() {\n        return retain0();\n    }\n\n    ByteBuf retain0() {\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf retain(int increment) {\n        return retain0(increment);\n    }\n\n    ByteBuf retain0(int increment) {\n        unwrap().retain(increment);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch() {\n        return touch0();\n    }\n\n    ByteBuf touch0() {\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch(Object hint) {\n        return touch0(hint);\n    }\n\n    ByteBuf touch0(Object hint) {\n        unwrap().touch(hint);\n        return this;\n    }\n\n    @Override\n    public final boolean release() {\n        return release0();\n    }\n\n    boolean release0() {\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean release(int decrement) {\n        return release0(decrement);\n    }\n\n    boolean release0(int decrement) {\n        return unwrap().release(decrement);\n    }\n\n    @Override\n    public boolean isReadOnly() {\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer internalNioBuffer(int index, int length) {\n        return nioBuffer(index, length);\n    }\n\n    @Override\n    public ByteBuffer nioBuffer(int index, int length) {\n        return unwrap().nioBuffer(index, length);\n    }\n\n    @Override\n    public boolean isContiguous() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "98cc93235c9ea7fdf1a215f6af8b68ca1aae65d8744b6586640413e7f789f2b4", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 119, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__AbstractDerivedByteBuf__e8ae49d0.java", "order": 8, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 0}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-4d3ae8ae49d0-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 709, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ffb78a84f3d8-I09", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int maxCapacity) {\n        super(maxCapacity);\n    }\n\n    @Override\n    final boolean isAccessible() {\n{int lI0O_a3e62fff=0x1761-0x1761;lI0O_a3e62fff=(lI0O_a3e62fff==0)?(lI0O_a3e62fff|0):(lI0O_a3e62fff&0);}\n\n        return isAccessible0();\n    }\n\n    boolean isAccessible0() {\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int refCnt() {\n        return refCnt0();\n    }\n\n    int refCnt0() {\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf retain() {\n        return retain0();\n    }\n\n    ByteBuf retain0() {\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf retain(int increment) {\n        return retain0(increment);\n    }\n\n    ByteBuf retain0(int increment) {\n        unwrap().retain(increment);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch() {\n        return touch0();\n    }\n\n    ByteBuf touch0() {\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch(Object hint) {\n        return touch0(hint);\n    }\n\n    ByteBuf touch0(Object hint) {\n        unwrap().touch(hint);\n        return this;\n    }\n\n    @Override\n    public final boolean release() {\n        return release0();\n    }\n\n    boolean release0() {\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean release(int decrement) {\n        return release0(decrement);\n    }\n\n    boolean release0(int decrement) {\n        return unwrap().release(decrement);\n    }\n\n    @Override\n    public boolean isReadOnly() {\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer internalNioBuffer(int index, int length) {\n        return nioBuffer(index, length);\n    }\n\n    @Override\n    public ByteBuffer nioBuffer(int index, int length) {\n        return unwrap().nioBuffer(index, length);\n    }\n\n    @Override\n    public boolean isContiguous() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "1644b62b5c985e99fabfa04c41692b84521ff3a4cddb83ea7f29f29a42112b36", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 114, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__AbstractDerivedByteBuf__8a84f3d8.java", "order": 9, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 1}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-ffb78a84f3d8-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 710, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-16ef6a528e62-I10", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int maxCapacity) {\n        super(maxCapacity);\n    } @Override\n    final boolean isAccessible() {\n        return isAccessible0(); } boolean isAccessible0() {\n        return unwrap().isAccessible();\n    } @Override public final int refCnt() {\n        return refCnt0(); } int refCnt0() { return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf retain() { return retain0();\n    }\n\n    ByteBuf retain0() {\n        unwrap().retain(); return this;\n    } @Override\n    public final ByteBuf retain(int increment) { return retain0(increment); }\n\n    ByteBuf retain0(int increment) {\n        unwrap().retain(increment);\n        return this; }\n\n    @Override\n    public final ByteBuf touch() {\n        return touch0();\n    } ByteBuf touch0() { unwrap().touch();\n        return this; }\n\n    @Override\n    public final ByteBuf touch(Object hint) { return touch0(hint); }\n\n    ByteBuf touch0(Object hint) { unwrap().touch(hint);\n        return this;\n    }\n\n    @Override\n    public final boolean release() { return release0();\n    } boolean release0() { return unwrap().release(); }\n\n    @Override public final boolean release(int decrement) { return release0(decrement);\n    }\n\n    boolean release0(int decrement) { return unwrap().release(decrement);\n    }\n\n    @Override\n    public boolean isReadOnly() {\n        return unwrap().isReadOnly(); }\n\n    @Override\n    public ByteBuffer internalNioBuffer(int index, int length) { return nioBuffer(index, length); } @Override public ByteBuffer nioBuffer(int index, int length) {\n        return unwrap().nioBuffer(index, length); }\n\n    @Override\n    public boolean isContiguous() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "3b7ca7bffc6b446b8284d9d01d79c1a2defd14f3e1fd3da6d539fcf8070d787a", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "partially-compact-layout", "level": 10, "line_count": 71, "local_path": "layout/partially-compact-layout/I10__netty__AbstractDerivedByteBuf__6a528e62.java", "order": 10, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 84, "line_break_groups_removed": 33, "line_breaks_removed": 41, "whitespace_characters_removed": 188}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-16ef6a528e62-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 711, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-26c8eff5baf9-I11", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int maxCapacity) {\n        super(maxCapacity);\n    }\n\n    @Override\n    final boolean isAccessible() {\n        return isAccessible0();\n    }\n\n    boolean isAccessible0() {\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int refCnt() {\n        return refCnt0();\n    }\n\n    int refCnt0() {\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf retain() {\n        return retain0();\n    }\n\n    ByteBuf retain0() {\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf retain(int increment) {\n        return retain0(increment);\n    }\n\n    ByteBuf retain0(int increment) {\n        unwrap().retain(increment);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch() {\n        return touch0();\n    }\n\n    ByteBuf touch0() {\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch(Object hint) {\n        return touch0(hint);\n    }\n\n    ByteBuf touch0(Object hint) {\n        unwrap().touch(hint);\n        return this;\n    }\n\n    @Override\n    public final boolean release() {\n        return release0();\n    }\n\n    boolean release0() {\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean release(int decrement) {\n        return release0(decrement);\n    }\n\n    boolean release0(int decrement) {\n        return unwrap().release(decrement);\n    }\n\n    @Override\n    public boolean isReadOnly() {\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer internalNioBuffer(int index, int length) {\n        return nioBuffer(index, length);\n    }\n\n    @Override\n    public ByteBuffer nioBuffer(int index, int length) {\n        return unwrap().nioBuffer(index, length);\n    }\n\n    @Override\n    public boolean isContiguous() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 112, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__AbstractDerivedByteBuf__eff5baf9.java", "order": 11, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-26c8eff5baf9-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 712, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-25df369ce298-I12", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int maxCapacity) {\n        super(maxCapacity);\n    }\n\n    @Override\n    final boolean isAccessible() {\n        return isAccessible0();\n    }\n\n    boolean isAccessible0() {\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int refCnt() {\n        return refCnt0();\n    }\n\n    int refCnt0() {\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf retain() {\n        return retain0();\n    }\n\n    ByteBuf retain0() {\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf retain(int increment) {\n        return retain0(increment);\n    }\n\n    ByteBuf retain0(int increment) {\n        unwrap().retain(increment);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch() {\n        return touch0();\n    }\n\n    ByteBuf touch0() {\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch(Object hint) {\n        return touch0(hint);\n    }\n\n    ByteBuf touch0(Object hint) {\n        unwrap().touch(hint);\n        return this;\n    }\n\n    @Override\n    public final boolean release() {\n        return release0();\n    }\n\n    boolean release0() {\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean release(int decrement) {\n        return release0(decrement);\n    }\n\n    boolean release0(int decrement) {\n        return unwrap().release(decrement);\n    }\n\n    @Override\n    public boolean isReadOnly() {\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer internalNioBuffer(int index, int length) {\n        return nioBuffer(index, length);\n    }\n\n    @Override\n    public ByteBuffer nioBuffer(int index, int length) {\n        return unwrap().nioBuffer(index, length);\n    }\n\n    @Override\n    public boolean isContiguous() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 112, "local_path": "data-flow/inline-intermediate-variables/I12__netty__AbstractDerivedByteBuf__369ce298.java", "order": 12, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-25df369ce298-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 713, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7928652fdfbd-I13", "source": "package io.netty.buffer;\nimport java.nio.ByteBuffer;\n\n/**\n * Abstract base class for {@link ByteBuf} implementations that wrap another\n * {@link ByteBuf}.\n *\n * @deprecated Do not use.\n */\n@Deprecated\npublic abstract class AbstractDerivedByteBuf extends AbstractByteBuf {\n\n    protected AbstractDerivedByteBuf(int maxCapacity) {\n        super(maxCapacity);\n    }\n\n    @Override\n    final boolean isAccessible() {\n        return isAccessible0();\n    }\n\n    boolean isAccessible0() {\n        return unwrap().isAccessible();\n    }\n\n    @Override\n    public final int refCnt() {\n        return refCnt0();\n    }\n\n    int refCnt0() {\n        return unwrap().refCnt();\n    }\n\n    @Override\n    public final ByteBuf retain() {\n        return retain0();\n    }\n\n    ByteBuf retain0() {\n        unwrap().retain();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf retain(int increment) {\n        return retain0(increment);\n    }\n\n    ByteBuf retain0(int increment) {\n        unwrap().retain(increment);\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch() {\n        return touch0();\n    }\n\n    ByteBuf touch0() {\n        unwrap().touch();\n        return this;\n    }\n\n    @Override\n    public final ByteBuf touch(Object hint) {\n        return touch0(hint);\n    }\n\n    ByteBuf touch0(Object hint) {\n        unwrap().touch(hint);\n        return this;\n    }\n\n    @Override\n    public final boolean release() {\n        return release0();\n    }\n\n    boolean release0() {\n        return unwrap().release();\n    }\n\n    @Override\n    public final boolean release(int decrement) {\n        return release0(decrement);\n    }\n\n    boolean release0(int decrement) {\n        return unwrap().release(decrement);\n    }\n\n    @Override\n    public boolean isReadOnly() {\n        return unwrap().isReadOnly();\n    }\n\n    @Override\n    public ByteBuffer internalNioBuffer(int index, int length) {\n        return nioBuffer(index, length);\n    }\n\n    @Override\n    public ByteBuffer nioBuffer(int index, int length) {\n        return unwrap().nioBuffer(index, length);\n    }\n\n    @Override\n    public boolean isContiguous() {\n        return unwrap().isContiguous();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__AbstractDerivedByteBuf__7f0a919e.java", "base_sample_id": "source-182609a4cca25d29", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java", "interference": "lower-for-to-while", "level": 13, "line_count": 112, "local_path": "control-flow/lower-for-to-while/I13__netty__AbstractDerivedByteBuf__652fdfbd.java", "order": 13, "original_content_sha256": "0b0df42713193067d49e53c91c002c90506395a148d91a44f24db7aa7c5ae495", "parent_variant_id": "int-dca37f0a919e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/AbstractDerivedByteBuf.java#L21-L129", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "AbstractDerivedByteBuf", "variant_id": "int-7928652fdfbd-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 714, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7cee9d8ba5ec-SRC", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf buf) {\n        super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);\n    }\n\n    @Override\n    public ByteBuf order(ByteOrder endianness) {\n        if (ObjectUtil.checkNotNull(endianness, \"endianness\") == order()) {\n            return this;\n        }\n\n        SwappedByteBuf swappedBuf = this.swappedBuf;\n        if (swappedBuf == null) {\n            this.swappedBuf = swappedBuf = new SwappedByteBuf(this);\n        }\n        return swappedBuf;\n    }\n\n    @Override\n    public ByteBuf asReadOnly() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf readSlice(int length) {\n        return new UnreleasableByteBuf(buf.readSlice(length));\n    }\n\n    @Override\n    public ByteBuf readRetainedSlice(int length) {\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return readSlice(length);\n    }\n\n    @Override\n    public ByteBuf slice() {\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf retainedSlice() {\n        // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return slice();\n    }\n\n    @Override\n    public ByteBuf slice(int index, int length) {\n        return new UnreleasableByteBuf(buf.slice(index, length));\n    }\n\n    @Override\n    public ByteBuf retainedSlice(int index, int length) {\n        // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return slice(index, length);\n    }\n\n    @Override\n    public ByteBuf duplicate() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf retainedDuplicate() {\n        // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return duplicate();\n    }\n\n    @Override\n    public ByteBuf retain(int increment) {\n        return this;\n    }\n\n    @Override\n    public ByteBuf retain() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    public boolean release() {\n        return false;\n    }\n\n    @Override\n    public boolean release(int decrement) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": null, "level": 0, "line_count": 116, "local_path": "source-original/SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "order": 0, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-7cee9d8ba5ec-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1009, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-43a88a1523d1-I01", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n\n\n\n\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf buf) {\n        super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);\n    }\n\n    @Override\n    public ByteBuf order(ByteOrder endianness) {\n        if (ObjectUtil.checkNotNull(endianness, \"endianness\") == order()) {\n            return this;\n        }\n\n        SwappedByteBuf swappedBuf = this.swappedBuf;\n        if (swappedBuf == null) {\n            this.swappedBuf = swappedBuf = new SwappedByteBuf(this);\n        }\n        return swappedBuf;\n    }\n\n    @Override\n    public ByteBuf asReadOnly() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf readSlice(int length) {\n        return new UnreleasableByteBuf(buf.readSlice(length));\n    }\n\n    @Override\n    public ByteBuf readRetainedSlice(int length) {\n         \n         \n         \n        return readSlice(length);\n    }\n\n    @Override\n    public ByteBuf slice() {\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf retainedSlice() {\n         \n         \n         \n        return slice();\n    }\n\n    @Override\n    public ByteBuf slice(int index, int length) {\n        return new UnreleasableByteBuf(buf.slice(index, length));\n    }\n\n    @Override\n    public ByteBuf retainedSlice(int index, int length) {\n         \n         \n         \n        return slice(index, length);\n    }\n\n    @Override\n    public ByteBuf duplicate() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf retainedDuplicate() {\n         \n         \n         \n        return duplicate();\n    }\n\n    @Override\n    public ByteBuf retain(int increment) {\n        return this;\n    }\n\n    @Override\n    public ByteBuf retain() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    public boolean release() {\n        return false;\n    }\n\n    @Override\n    public boolean release(int decrement) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "4441484ce48bf5bb10c2d9f8ec7a24e5781663441ff1c51c26320edf3c833034", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "remove-comments", "level": 1, "line_count": 116, "local_path": "comments/remove-comments/I01__netty__UnreleasableByteBuf__8a1523d1.java", "order": 1, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1323, "comments_removed": 13}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-43a88a1523d1-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1010, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f29e8684dba7-I02", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf buf) {\n        super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);\n    }\n\n    @Override\n    public ByteBuf ord(ByteOrder end) {\n        if (ObjectUtil.checkNotNull(end, \"endianness\") == ord()) {\n            return this;\n        }\n\n        SwappedByteBuf swapped = this.swappedBuf;\n        if (swapped == null) {\n            this.swappedBuf = swapped = new SwappedByteBuf(this);\n        }\n        return swapped;\n    }\n\n    @Override\n    public ByteBuf as() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf read(int len) {\n        return new UnreleasableByteBuf(buf.readSlice(len));\n    }\n\n    @Override\n    public ByteBuf read2(int len2) {\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return read(len2);\n    }\n\n    @Override\n    public ByteBuf sli() {\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf retained() {\n        // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return sli();\n    }\n\n    @Override\n    public ByteBuf sli(int ind, int len3) {\n        return new UnreleasableByteBuf(buf.slice(ind, len3));\n    }\n\n    @Override\n    public ByteBuf retained(int ind2, int len4) {\n        // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return sli(ind2, len4);\n    }\n\n    @Override\n    public ByteBuf dup() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf retained2() {\n        // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return dup();\n    }\n\n    @Override\n    public ByteBuf ret(int inc) {\n        return this;\n    }\n\n    @Override\n    public ByteBuf ret() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf tou() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf tou(Object hin) {\n        return this;\n    }\n\n    @Override\n    public boolean rel() {\n        return false;\n    }\n\n    @Override\n    public boolean rel(int dec) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a058c646a1866fca224dbc52391c0d1495ad407352f679fa7358d337bbe6bdf6", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "shorten-identifiers", "level": 2, "line_count": 116, "local_path": "identifiers/shorten-identifiers/I02__netty__UnreleasableByteBuf__8684dba7.java", "order": 2, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 13, "identifiers_declared": 12, "local_name_collisions_avoided": 4, "method_calls_renamed": 5, "method_declarations_renamed": 16, "method_name_collisions_avoided": 2, "method_name_groups": 11}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-f29e8684dba7-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1011, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1e8c5cd93f3a-I03", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf map) {\n        super(map instanceof UnreleasableByteBuf ? map.unwrap() : map);\n    }\n\n    @Override\n    public ByteBuf track(ByteOrder sharedUser) {\n        if (ObjectUtil.checkNotNull(sharedUser, \"endianness\") == track()) {\n            return this;\n        }\n\n        SwappedByteBuf backupUser = this.swappedBuf;\n        if (backupUser == null) {\n            this.swappedBuf = backupUser = new SwappedByteBuf(this);\n        }\n        return backupUser;\n    }\n\n    @Override\n    public ByteBuf checkIndex() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf parseNode(int region) {\n        return new UnreleasableByteBuf(buf.readSlice(region));\n    }\n\n    @Override\n    public ByteBuf validateRequest(int result) {\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return parseNode(result);\n    }\n\n    @Override\n    public ByteBuf store() {\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf removeAddress() {\n        // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return store();\n    }\n\n    @Override\n    public ByteBuf store(int score, int target) {\n        return new UnreleasableByteBuf(buf.slice(score, target));\n    }\n\n    @Override\n    public ByteBuf removeAddress(int batch, int client) {\n        // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return store(batch, client);\n    }\n\n    @Override\n    public ByteBuf fetchItem() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf validateAccount() {\n        // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return fetchItem();\n    }\n\n    @Override\n    public ByteBuf delete(int nextToken) {\n        return this;\n    }\n\n    @Override\n    public ByteBuf delete() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf apply() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf apply(Object mode) {\n        return this;\n    }\n\n    @Override\n    public boolean measure() {\n        return false;\n    }\n\n    @Override\n    public boolean measure(int localItem) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "ab7bd13ebcd5c8bd9a9307cff17b8fdd35d6a2a3be6fd726b0600862ea531226", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "mislead-identifiers", "level": 3, "line_count": 116, "local_path": "identifiers/mislead-identifiers/I03__netty__UnreleasableByteBuf__5cd93f3a.java", "order": 3, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 13, "identifiers_declared": 12, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 1, "local_exact_length_matches": 12, "local_random_pool_selections": 12, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 5, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 16, "method_exact_length_matches": 9, "method_name_groups": 11, "method_random_pool_selections": 11, "method_total_length_difference": 4}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-1e8c5cd93f3a-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1012, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b836ef99ca22-I04", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf a) {\n        super(a instanceof UnreleasableByteBuf ? a.unwrap() : a);\n    }\n\n    @Override\n    public ByteBuf a(ByteOrder b) {\n        if (ObjectUtil.checkNotNull(b, \"endianness\") == a()) {\n            return this;\n        }\n\n        SwappedByteBuf c = this.swappedBuf;\n        if (c == null) {\n            this.swappedBuf = c = new SwappedByteBuf(this);\n        }\n        return c;\n    }\n\n    @Override\n    public ByteBuf b() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf c(int d) {\n        return new UnreleasableByteBuf(buf.readSlice(d));\n    }\n\n    @Override\n    public ByteBuf d(int e) {\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return c(e);\n    }\n\n    @Override\n    public ByteBuf e() {\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf f() {\n        // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return e();\n    }\n\n    @Override\n    public ByteBuf e(int f, int g) {\n        return new UnreleasableByteBuf(buf.slice(f, g));\n    }\n\n    @Override\n    public ByteBuf f(int h, int i) {\n        // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return e(h, i);\n    }\n\n    @Override\n    public ByteBuf g() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf h() {\n        // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return g();\n    }\n\n    @Override\n    public ByteBuf i(int j) {\n        return this;\n    }\n\n    @Override\n    public ByteBuf i() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf j() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf j(Object k) {\n        return this;\n    }\n\n    @Override\n    public boolean k() {\n        return false;\n    }\n\n    @Override\n    public boolean k(int l) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "00683c455d536e0e5fda67a8b60e1d24eff7811dfe0fd1059f4f12d4a4fcc4bf", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "garble-identifiers", "level": 4, "line_count": 116, "local_path": "identifiers/garble-identifiers/I04__netty__UnreleasableByteBuf__ef99ca22.java", "order": 4, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 13, "identifiers_declared": 12, "local_name_collisions_avoided": 0, "method_calls_renamed": 5, "method_declarations_renamed": 16, "method_name_collisions_avoided": 0, "method_name_groups": 11}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-b836ef99ca22-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1013, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a127c62f9f43-I05", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf buf) {\n        super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);\n    }\n\n    @Override\n    public ByteBuf order(ByteOrder endianness) {\n        if (ObjectUtil.checkNotNull(endianness, \"endianness\") == order()) {\n            return this;\n        }\n\n        SwappedByteBuf swappedBuf = this.swappedBuf;\n        if (swappedBuf == null) {\n            this.swappedBuf = swappedBuf = new SwappedByteBuf(this);\n        }\n        return swappedBuf;\n    }\n\n    @Override\n    public ByteBuf asReadOnly() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf readSlice(int length) {\n        return new UnreleasableByteBuf(buf.readSlice(length));\n    }\n\n    @Override\n    public ByteBuf readRetainedSlice(int length) {\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return readSlice(length);\n    }\n\n    @Override\n    public ByteBuf slice() {\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf retainedSlice() {\n        // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return slice();\n    }\n\n    @Override\n    public ByteBuf slice(int index, int length) {\n        return new UnreleasableByteBuf(buf.slice(index, length));\n    }\n\n    @Override\n    public ByteBuf retainedSlice(int index, int length) {\n        // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return slice(index, length);\n    }\n\n    @Override\n    public ByteBuf duplicate() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf retainedDuplicate() {\n        // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return duplicate();\n    }\n\n    @Override\n    public ByteBuf retain(int increment) {\n        return this;\n    }\n\n    @Override\n    public ByteBuf retain() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    public boolean release() {\n        return false;\n    }\n\n    @Override\n    public boolean release(int decrement) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "encode-integer-literals", "level": 5, "line_count": 116, "local_path": "expressions/encode-integer-literals/I05__netty__UnreleasableByteBuf__c62f9f43.java", "order": 5, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-a127c62f9f43-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1014, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4790f5c8aba1-I06", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf buf) {\n        super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);\n    }\n\n    @Override\n    public ByteBuf order(ByteOrder endianness) {\n        if (!((ObjectUtil.checkNotNull(endianness, \"endianness\") == order()))) {} else {\n            return this;\n        }\n\n        SwappedByteBuf swappedBuf = this.swappedBuf;\n        if (!((swappedBuf == null))) {} else {\n            this.swappedBuf = swappedBuf = new SwappedByteBuf(this);\n        }\n        return swappedBuf;\n    }\n\n    @Override\n    public ByteBuf asReadOnly() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf readSlice(int length) {\n        return new UnreleasableByteBuf(buf.readSlice(length));\n    }\n\n    @Override\n    public ByteBuf readRetainedSlice(int length) {\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return readSlice(length);\n    }\n\n    @Override\n    public ByteBuf slice() {\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf retainedSlice() {\n        // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return slice();\n    }\n\n    @Override\n    public ByteBuf slice(int index, int length) {\n        return new UnreleasableByteBuf(buf.slice(index, length));\n    }\n\n    @Override\n    public ByteBuf retainedSlice(int index, int length) {\n        // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return slice(index, length);\n    }\n\n    @Override\n    public ByteBuf duplicate() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf retainedDuplicate() {\n        // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return duplicate();\n    }\n\n    @Override\n    public ByteBuf retain(int increment) {\n        return this;\n    }\n\n    @Override\n    public ByteBuf retain() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    public boolean release() {\n        return false;\n    }\n\n    @Override\n    public boolean release(int decrement) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "22b8621a92245bccb3d17fdedba1875869ff081fc00ddd723ee78849b146dfda", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "invert-conditions", "level": 6, "line_count": 116, "local_path": "expressions/invert-conditions/I06__netty__UnreleasableByteBuf__f5c8aba1.java", "order": 6, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-4790f5c8aba1-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1015, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3b96cadc4a2f-I07", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf buf) {\n        super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);\nif (((0xA3E3 ^ 0xA3E3) != 0)) { throw new AssertionError(); }\n\n    }\n\n    @Override\n    public ByteBuf order(ByteOrder endianness) {\nif (((0xEFB0 ^ 0xEFB0) != 0)) { throw new AssertionError(); }\n\n        if (ObjectUtil.checkNotNull(endianness, \"endianness\") == order()) {\n            return this;\n        }\n\n        SwappedByteBuf swappedBuf = this.swappedBuf;\n        if (swappedBuf == null) {\n            this.swappedBuf = swappedBuf = new SwappedByteBuf(this);\n        }\n        return swappedBuf;\n    }\n\n    @Override\n    public ByteBuf asReadOnly() {\nif (((0xA7DA ^ 0xA7DA) != 0)) { throw new AssertionError(); }\n\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf readSlice(int length) {\nif (((0x4909 ^ 0x4909) != 0)) { throw new AssertionError(); }\n\n        return new UnreleasableByteBuf(buf.readSlice(length));\n    }\n\n    @Override\n    public ByteBuf readRetainedSlice(int length) {\nif (((0x7758 ^ 0x7758) != 0)) { throw new AssertionError(); }\n\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return readSlice(length);\n    }\n\n    @Override\n    public ByteBuf slice() {\nif (((0x3D5C ^ 0x3D5C) != 0)) { throw new AssertionError(); }\n\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf retainedSlice() {\nif (((0x3A96 ^ 0x3A96) != 0)) { throw new AssertionError(); }\n\n        // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return slice();\n    }\n\n    @Override\n    public ByteBuf slice(int index, int length) {\nif (((0x9445 ^ 0x9445) != 0)) { throw new AssertionError(); }\n\n        return new UnreleasableByteBuf(buf.slice(index, length));\n    }\n\n    @Override\n    public ByteBuf retainedSlice(int index, int length) {\nif (((0x10A2 ^ 0x10A2) != 0)) { throw new AssertionError(); }\n\n        // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return slice(index, length);\n    }\n\n    @Override\n    public ByteBuf duplicate() {\nif (((0x52A7 ^ 0x52A7) != 0)) { throw new AssertionError(); }\n\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf retainedDuplicate() {\nif (((0x66AD ^ 0x66AD) != 0)) { throw new AssertionError(); }\n\n        // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return duplicate();\n    }\n\n    @Override\n    public ByteBuf retain(int increment) {\nif (((0x74A9 ^ 0x74A9) != 0)) { throw new AssertionError(); }\n\n        return this;\n    }\n\n    @Override\n    public ByteBuf retain() {\nif (((0x7743 ^ 0x7743) != 0)) { throw new AssertionError(); }\n\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch() {\nif (((0x2526 ^ 0x2526) != 0)) { throw new AssertionError(); }\n\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch(Object hint) {\nif (((0x6283 ^ 0x6283) != 0)) { throw new AssertionError(); }\n\n        return this;\n    }\n\n    @Override\n    public boolean release() {\nif (((0xCE85 ^ 0xCE85) != 0)) { throw new AssertionError(); }\n\n        return false;\n    }\n\n    @Override\n    public boolean release(int decrement) {\nif (((0xD82D ^ 0xD82D) != 0)) { throw new AssertionError(); }\n\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "f26d87e3721c4cae19f015c1ec9ec9bf4179fe2da5afd7a9c6e881e283f429e0", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "insert-dead-branches", "level": 7, "line_count": 150, "local_path": "code-injection/insert-dead-branches/I07__netty__UnreleasableByteBuf__cadc4a2f.java", "order": 7, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 17}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-3b96cadc4a2f-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1016, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-de3afbebebf3-I08", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf buf) {\n        super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);\n    }\n\n    @Override\n    public ByteBuf order(ByteOrder endianness) {\n        if (ObjectUtil.checkNotNull(endianness, \"endianness\") == order()) {\n            return this;\n        }\n\n        SwappedByteBuf swappedBuf = this.swappedBuf;\n        if (swappedBuf == null) {\n            this.swappedBuf = swappedBuf = new SwappedByteBuf(this);\n        }\n        return swappedBuf;\n    }\n\n    @Override\n    public ByteBuf asReadOnly() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf readSlice(int length) {\n        return new UnreleasableByteBuf(buf.readSlice(length));\n    }\n\n    @Override\n    public ByteBuf readRetainedSlice(int length) {\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return readSlice(length);\n    }\n\n    @Override\n    public ByteBuf slice() {\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf retainedSlice() {\n        // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return slice();\n    }\n\n    @Override\n    public ByteBuf slice(int index, int length) {\n        return new UnreleasableByteBuf(buf.slice(index, length));\n    }\n\n    @Override\n    public ByteBuf retainedSlice(int index, int length) {\n        // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return slice(index, length);\n    }\n\n    @Override\n    public ByteBuf duplicate() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf retainedDuplicate() {\n        // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return duplicate();\n    }\n\n    @Override\n    public ByteBuf retain(int increment) {\n        return this;\n    }\n\n    @Override\n    public ByteBuf retain() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch() {\n{\n  int previousNumber = 0;\n  int currentNumber = 1;\n  for (int sequenceStep = 0; sequenceStep < 4; sequenceStep++) {\n    int nextNumber = previousNumber + currentNumber;\n    previousNumber = currentNumber;\n    currentNumber = nextNumber;\n  }\n}\n\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    public boolean release() {\n        return false;\n    }\n\n    @Override\n    public boolean release(int decrement) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5be370f003d011488c9206a242bcc22e5fb6c1841e7ca2d22568892813be1723", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 126, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__UnreleasableByteBuf__fbebebf3.java", "order": 8, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 9, "readable_template_index": 8}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-de3afbebebf3-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1017, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6170b7536ce0-I09", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf buf) {\n        super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);\n    }\n\n    @Override\n    public ByteBuf order(ByteOrder endianness) {\n        if (ObjectUtil.checkNotNull(endianness, \"endianness\") == order()) {\n            return this;\n        }\n\n        SwappedByteBuf swappedBuf = this.swappedBuf;\n        if (swappedBuf == null) {\n            this.swappedBuf = swappedBuf = new SwappedByteBuf(this);\n        }\n        return swappedBuf;\n    }\n\n    @Override\n    public ByteBuf asReadOnly() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf readSlice(int length) {\n        return new UnreleasableByteBuf(buf.readSlice(length));\n    }\n\n    @Override\n    public ByteBuf readRetainedSlice(int length) {\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return readSlice(length);\n    }\n\n    @Override\n    public ByteBuf slice() {\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf retainedSlice() {\n        // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return slice();\n    }\n\n    @Override\n    public ByteBuf slice(int index, int length) {\n        return new UnreleasableByteBuf(buf.slice(index, length));\n    }\n\n    @Override\n    public ByteBuf retainedSlice(int index, int length) {\n        // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return slice(index, length);\n    }\n\n    @Override\n    public ByteBuf duplicate() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf retainedDuplicate() {\n        // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return duplicate();\n    }\n\n    @Override\n    public ByteBuf retain(int increment) {\n        return this;\n    }\n\n    @Override\n    public ByteBuf retain() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch(Object hint) {\n{int lI0O_0b0d6afc=(0x2A70^0x2A70);switch(lI0O_0b0d6afc){case 0:lI0O_0b0d6afc|=0;break;default:lI0O_0b0d6afc&=0;}}\n\n        return this;\n    }\n\n    @Override\n    public boolean release() {\n        return false;\n    }\n\n    @Override\n    public boolean release(int decrement) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "79fd3f8f18e054edaccb0564509068acde12c7b73d469909ed8b0388461de48f", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 118, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__UnreleasableByteBuf__b7536ce0.java", "order": 9, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 6}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-6170b7536ce0-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1018, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0c324824597a-I10", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf buf) {\n        super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf); }\n\n    @Override public ByteBuf order(ByteOrder endianness) {\n        if (ObjectUtil.checkNotNull(endianness, \"endianness\") == order()) { return this; }\n\n        SwappedByteBuf swappedBuf = this.swappedBuf; if (swappedBuf == null) {\n            this.swappedBuf = swappedBuf = new SwappedByteBuf(this);\n        }\n        return swappedBuf;\n    }\n\n    @Override\n    public ByteBuf asReadOnly() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override public ByteBuf readSlice(int length) {\n        return new UnreleasableByteBuf(buf.readSlice(length));\n    } @Override public ByteBuf readRetainedSlice(int length) {\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return readSlice(length); }\n\n    @Override\n    public ByteBuf slice() { return new UnreleasableByteBuf(buf.slice()); }\n\n    @Override public ByteBuf retainedSlice() { // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return slice(); } @Override\n    public ByteBuf slice(int index, int length) { return new UnreleasableByteBuf(buf.slice(index, length));\n    } @Override\n    public ByteBuf retainedSlice(int index, int length) { // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return slice(index, length); }\n\n    @Override\n    public ByteBuf duplicate() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    } @Override\n    public ByteBuf retainedDuplicate() { // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return duplicate(); } @Override public ByteBuf retain(int increment) { return this;\n    } @Override\n    public ByteBuf retain() { return this;\n    } @Override public ByteBuf touch() { return this;\n    }\n\n    @Override public ByteBuf touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    public boolean release() {\n        return false; }\n\n    @Override\n    public boolean release(int decrement) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "b4bc1933f77764f8c5f8c3523527f4a5f4dd6df194036466a3d6cf3ea477bb62", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "partially-compact-layout", "level": 10, "line_count": 77, "local_path": "layout/partially-compact-layout/I10__netty__UnreleasableByteBuf__4824597a.java", "order": 10, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 80, "line_break_groups_removed": 32, "line_breaks_removed": 39, "whitespace_characters_removed": 183}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-0c324824597a-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1019, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ea5987f6ce90-I11", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf buf) {\n        super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);\n    }\n\n    @Override\n    public ByteBuf order(ByteOrder endianness) {\n        if (ObjectUtil.checkNotNull(endianness, \"endianness\") == order()) {\n            return this;\n        }\n\n        SwappedByteBuf swappedBuf = this.swappedBuf;\n        if (swappedBuf == null) {\n            this.swappedBuf = swappedBuf = new SwappedByteBuf(this);\n        }\n        return swappedBuf;\n    }\n\n    @Override\n    public ByteBuf asReadOnly() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf readSlice(int length) {\n        return new UnreleasableByteBuf(buf.readSlice(length));\n    }\n\n    @Override\n    public ByteBuf readRetainedSlice(int length) {\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return readSlice(length);\n    }\n\n    @Override\n    public ByteBuf slice() {\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf retainedSlice() {\n        // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return slice();\n    }\n\n    @Override\n    public ByteBuf slice(int index, int length) {\n        return new UnreleasableByteBuf(buf.slice(index, length));\n    }\n\n    @Override\n    public ByteBuf retainedSlice(int index, int length) {\n        // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return slice(index, length);\n    }\n\n    @Override\n    public ByteBuf duplicate() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf retainedDuplicate() {\n        // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return duplicate();\n    }\n\n    @Override\n    public ByteBuf retain(int increment) {\n        return this;\n    }\n\n    @Override\n    public ByteBuf retain() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    public boolean release() {\n        return false;\n    }\n\n    @Override\n    public boolean release(int decrement) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 116, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__UnreleasableByteBuf__87f6ce90.java", "order": 11, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-ea5987f6ce90-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1020, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7ae1fa3c1a7f-I12", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf buf) {\n        super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);\n    }\n\n    @Override\n    public ByteBuf order(ByteOrder endianness) {\n        if (ObjectUtil.checkNotNull(endianness, \"endianness\") == order()) {\n            return this;\n        }\n\n        SwappedByteBuf swappedBuf = this.swappedBuf;\n        if (swappedBuf == null) {\n            this.swappedBuf = swappedBuf = new SwappedByteBuf(this);\n        }\n        return swappedBuf;\n    }\n\n    @Override\n    public ByteBuf asReadOnly() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf readSlice(int length) {\n        return new UnreleasableByteBuf(buf.readSlice(length));\n    }\n\n    @Override\n    public ByteBuf readRetainedSlice(int length) {\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return readSlice(length);\n    }\n\n    @Override\n    public ByteBuf slice() {\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf retainedSlice() {\n        // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return slice();\n    }\n\n    @Override\n    public ByteBuf slice(int index, int length) {\n        return new UnreleasableByteBuf(buf.slice(index, length));\n    }\n\n    @Override\n    public ByteBuf retainedSlice(int index, int length) {\n        // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return slice(index, length);\n    }\n\n    @Override\n    public ByteBuf duplicate() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf retainedDuplicate() {\n        // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return duplicate();\n    }\n\n    @Override\n    public ByteBuf retain(int increment) {\n        return this;\n    }\n\n    @Override\n    public ByteBuf retain() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    public boolean release() {\n        return false;\n    }\n\n    @Override\n    public boolean release(int decrement) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 116, "local_path": "data-flow/inline-intermediate-variables/I12__netty__UnreleasableByteBuf__fa3c1a7f.java", "order": 12, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-7ae1fa3c1a7f-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1021, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e1c3820fc22a-I13", "source": "package io.netty.buffer;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteOrder;\n\n/**\n * A {@link ByteBuf} implementation that wraps another buffer to prevent a user from increasing or decreasing the\n * wrapped buffer's reference count.\n */\nfinal class UnreleasableByteBuf extends WrappedByteBuf {\n\n    private SwappedByteBuf swappedBuf;\n\n    UnreleasableByteBuf(ByteBuf buf) {\n        super(buf instanceof UnreleasableByteBuf ? buf.unwrap() : buf);\n    }\n\n    @Override\n    public ByteBuf order(ByteOrder endianness) {\n        if (ObjectUtil.checkNotNull(endianness, \"endianness\") == order()) {\n            return this;\n        }\n\n        SwappedByteBuf swappedBuf = this.swappedBuf;\n        if (swappedBuf == null) {\n            this.swappedBuf = swappedBuf = new SwappedByteBuf(this);\n        }\n        return swappedBuf;\n    }\n\n    @Override\n    public ByteBuf asReadOnly() {\n        return buf.isReadOnly() ? this : new UnreleasableByteBuf(buf.asReadOnly());\n    }\n\n    @Override\n    public ByteBuf readSlice(int length) {\n        return new UnreleasableByteBuf(buf.readSlice(length));\n    }\n\n    @Override\n    public ByteBuf readRetainedSlice(int length) {\n        // We could call buf.readSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use readSlice(..) because the end result should be logically equivalent.\n        return readSlice(length);\n    }\n\n    @Override\n    public ByteBuf slice() {\n        return new UnreleasableByteBuf(buf.slice());\n    }\n\n    @Override\n    public ByteBuf retainedSlice() {\n        // We could call buf.retainedSlice(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice() because the end result should be logically equivalent.\n        return slice();\n    }\n\n    @Override\n    public ByteBuf slice(int index, int length) {\n        return new UnreleasableByteBuf(buf.slice(index, length));\n    }\n\n    @Override\n    public ByteBuf retainedSlice(int index, int length) {\n        // We could call buf.retainedSlice(..), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use slice(..) because the end result should be logically equivalent.\n        return slice(index, length);\n    }\n\n    @Override\n    public ByteBuf duplicate() {\n        return new UnreleasableByteBuf(buf.duplicate());\n    }\n\n    @Override\n    public ByteBuf retainedDuplicate() {\n        // We could call buf.retainedDuplicate(), and then call buf.release(). However this creates a leak in unit tests\n        // because the release method on UnreleasableByteBuf will never allow the leak record to be cleaned up.\n        // So we just use duplicate() because the end result should be logically equivalent.\n        return duplicate();\n    }\n\n    @Override\n    public ByteBuf retain(int increment) {\n        return this;\n    }\n\n    @Override\n    public ByteBuf retain() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch() {\n        return this;\n    }\n\n    @Override\n    public ByteBuf touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    public boolean release() {\n        return false;\n    }\n\n    @Override\n    public boolean release(int decrement) {\n        return false;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__UnreleasableByteBuf__9d8ba5ec.java", "base_sample_id": "source-74c52b44df875a12", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java", "interference": "lower-for-to-while", "level": 13, "line_count": 116, "local_path": "control-flow/lower-for-to-while/I13__netty__UnreleasableByteBuf__820fc22a.java", "order": 13, "original_content_sha256": "ea97eb544710bcfdbb3e32d39d17f46d4bdddc3e73c6ba42eff7b9ad3c3760c5", "parent_variant_id": "int-7cee9d8ba5ec-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "buffer/src/main/java/io/netty/buffer/UnreleasableByteBuf.java#L22-L133", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "UnreleasableByteBuf", "variant_id": "int-e1c3820fc22a-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1022, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-df1d256e41e0-SRC", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L;\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException() {\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message) {\n        super(message);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable cause) {\n        super(cause);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": null, "level": 0, "line_count": 36, "local_path": "source-original/SRC__netty__EncoderException__256e41e0.java", "order": 0, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-df1d256e41e0-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 729, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a2617cb50afd-I01", "source": "package io.netty.handler.codec;\n\n\n\n\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L;\n\n    \n\n\n    public EncoderException() {\n    }\n\n    \n\n\n    public EncoderException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    \n\n\n    public EncoderException(String message) {\n        super(message);\n    }\n\n    \n\n\n    public EncoderException(Throwable cause) {\n        super(cause);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "e1913bf26e9253aede7db3c43421d46ff10848a2247298e3979e00061c00b388", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "remove-comments", "level": 1, "line_count": 36, "local_path": "comments/remove-comments/I01__netty__EncoderException__7cb50afd.java", "order": 1, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 225, "comments_removed": 5}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-a2617cb50afd-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 730, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8b47a270c08b-I02", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L;\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException() {\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String mes, Throwable cau) {\n        super(mes, cau);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String mes2) {\n        super(mes2);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable cau2) {\n        super(cau2);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "c520575c9a628985fd301780fd1003eab6ef553e2b54837186bc7f0944e7bbd4", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "shorten-identifiers", "level": 2, "line_count": 36, "local_path": "identifiers/shorten-identifiers/I02__netty__EncoderException__a270c08b.java", "order": 2, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 4, "local_name_collisions_avoided": 2, "method_calls_renamed": 0, "method_declarations_renamed": 0, "method_name_collisions_avoided": 0, "method_name_groups": 0}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-8b47a270c08b-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 731, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-82ca2427526c-I03", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L;\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException() {\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String channel, Throwable group) {\n        super(channel, group);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String address) {\n        super(address);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable entry) {\n        super(entry);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "22d53a769ab3f71bceca47103d4b9ffbb3407c51d2129c2b26c8944ab7349a49", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "mislead-identifiers", "level": 3, "line_count": 36, "local_path": "identifiers/mislead-identifiers/I03__netty__EncoderException__2427526c.java", "order": 3, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 4, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 4, "local_random_pool_selections": 4, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 0, "method_exact_length_matches": 0, "method_name_groups": 0, "method_random_pool_selections": 0, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-82ca2427526c-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 732, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4bef36b32e82-I04", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L;\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException() {\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String a, Throwable b) {\n        super(a, b);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String c) {\n        super(c);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable d) {\n        super(d);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "1d61b243407345cded52c89568b83ba7bf41fa344f21835e2a103fec849acaab", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "garble-identifiers", "level": 4, "line_count": 36, "local_path": "identifiers/garble-identifiers/I04__netty__EncoderException__36b32e82.java", "order": 4, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 4, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 0, "method_name_collisions_avoided": 0, "method_name_groups": 0}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-4bef36b32e82-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 733, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5adcb5376155-I05", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -0x4695883f7ecc4566L;\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException() {\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message) {\n        super(message);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable cause) {\n        super(cause);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "f8a177a5253847925a2b9d6b31ca7d2a557d521882dcb8da83014fafec07b966", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "encode-integer-literals", "level": 5, "line_count": 36, "local_path": "expressions/encode-integer-literals/I05__netty__EncoderException__b5376155.java", "order": 5, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-5adcb5376155-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 734, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-044df955f943-I06", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L;\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException() {\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message) {\n        super(message);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable cause) {\n        super(cause);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "invert-conditions", "level": 6, "line_count": 36, "local_path": "expressions/invert-conditions/I06__netty__EncoderException__f955f943.java", "order": 6, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-044df955f943-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 735, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1f578c5355b4-I07", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L;\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException() {\nif (((0xA25A ^ 0xA25A) != 0)) { throw new AssertionError(); }\n\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message, Throwable cause) {\n        super(message, cause);\nif (((0xBA1F ^ 0xBA1F) != 0)) { throw new AssertionError(); }\n\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message) {\n        super(message);\nif (((0x60B5 ^ 0x60B5) != 0)) { throw new AssertionError(); }\n\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable cause) {\n        super(cause);\nif (((0x2695 ^ 0x2695) != 0)) { throw new AssertionError(); }\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "c3f32c3d9ce6d076bb0fb38607b64ddecaa01ef58109e9455469424caf013d00", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "insert-dead-branches", "level": 7, "line_count": 44, "local_path": "code-injection/insert-dead-branches/I07__netty__EncoderException__8c5355b4.java", "order": 7, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-1f578c5355b4-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 736, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a5b482fd7696-I08", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L;\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException() {\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message) {\n        super(message);\n{\n  int evenNumberCount = 0;\n  for (int candidateNumber = 0; candidateNumber < 6; candidateNumber++) {\n    if (candidateNumber % 2 == 0) {\n      evenNumberCount++;\n    }\n  }\n}\n\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable cause) {\n        super(cause);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "f746cec77f029d268af06065c0a311b5ea150797407306378f38700f7b7c6214", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 45, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__EncoderException__82fd7696.java", "order": 8, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 2}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-a5b482fd7696-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 737, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c619a2664226-I09", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L;\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException() {\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message) {\n        super(message);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable cause) {\n        super(cause);\n{boolean lI0O_8d44e395=((0xA103^0xA103)!=0);lI0O_8d44e395=!(!lI0O_8d44e395);}\n\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "3809294c106f61e47ba7fd0356cd612b485f46df6766be962ab24d42613a5767", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 38, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__EncoderException__a2664226.java", "order": 9, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-c619a2664226-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 738, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-22cc31eb6537-I10", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */ public class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L; /**\n     * Creates a new instance.\n     */ public EncoderException() {\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message, Throwable cause) { super(message, cause);\n    } /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message) { super(message); }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable cause) {\n        super(cause);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "c8af7852e7f763fdbb6cbd39e899a438c458dacec8be4d815d6a18f80597c42e", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "partially-compact-layout", "level": 10, "line_count": 27, "local_path": "layout/partially-compact-layout/I10__netty__EncoderException__31eb6537.java", "order": 10, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 19, "line_break_groups_removed": 7, "line_breaks_removed": 9, "whitespace_characters_removed": 34}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-22cc31eb6537-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 739, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a7c9c86cfeff-I11", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L;\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException() {\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message) {\n        super(message);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable cause) {\n        super(cause);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 36, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__EncoderException__c86cfeff.java", "order": 11, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-a7c9c86cfeff-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 740, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7fd583c42a85-I12", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L;\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException() {\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message) {\n        super(message);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable cause) {\n        super(cause);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 36, "local_path": "data-flow/inline-intermediate-variables/I12__netty__EncoderException__83c42a85.java", "order": 12, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-7fd583c42a85-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 741, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-64866ea0e3ae-I13", "source": "package io.netty.handler.codec;\n\n/**\n * An {@link CodecException} which is thrown by an encoder.\n */\npublic class EncoderException extends CodecException {\n\n    private static final long serialVersionUID = -5086121160476476774L;\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException() {\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(String message) {\n        super(message);\n    }\n\n    /**\n     * Creates a new instance.\n     */\n    public EncoderException(Throwable cause) {\n        super(cause);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__EncoderException__256e41e0.java", "base_sample_id": "source-b50eb86e91d29ffc", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:codec-base/src/main/java/io/netty/handler/codec/EncoderException.java", "interference": "lower-for-to-while", "level": 13, "line_count": 36, "local_path": "control-flow/lower-for-to-while/I13__netty__EncoderException__6ea0e3ae.java", "order": 13, "original_content_sha256": "0798e6852558a8930e820e1f6bac52633867a11b8362f3320b0e2084f1416b91", "parent_variant_id": "int-df1d256e41e0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-base/src/main/java/io/netty/handler/codec/EncoderException.java#L18-L51", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "EncoderException", "variant_id": "int-64866ea0e3ae-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 742, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-725b7e3ed303-SRC", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(TOKEN_KEY);\n        }\n    };\n\n    private static Mac newMac(byte[] key) {\n        try {\n            SecretKeySpec keySpec = new SecretKeySpec(key, ALGORITHM);\n            Mac mac = Mac.getInstance(ALGORITHM);\n            mac.init(keySpec);\n            return mac;\n        } catch (NoSuchAlgorithmException | InvalidKeyException exception) {\n            throw new IllegalStateException(exception);\n        }\n    }\n\n    private static ByteBuffer sign(Mac mac, ByteBuffer input, int outLength) {\n        mac.reset();\n        mac.update(input);\n        byte[] signBytes = mac.doFinal();\n        if (signBytes.length != outLength) {\n            signBytes = Arrays.copyOf(signBytes, outLength);\n        }\n        return ByteBuffer.wrap(signBytes);\n    }\n\n    static ByteBuffer signCid(ByteBuffer input, int outLength) {\n        return sign(CID_MACS.get(), input, outLength);\n    }\n\n    static ByteBuffer signToken(ByteBuffer input, int outLength) {\n        return sign(TOKEN_MACS.get(), input, outLength);\n    }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": null, "level": 0, "line_count": 71, "local_path": "source-original/SRC__netty__Hmac__7e3ed303.java", "order": 0, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-725b7e3ed303-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 757, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a75a506a2bd0-I01", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n     \n     \n     \n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(TOKEN_KEY);\n        }\n    };\n\n    private static Mac newMac(byte[] key) {\n        try {\n            SecretKeySpec keySpec = new SecretKeySpec(key, ALGORITHM);\n            Mac mac = Mac.getInstance(ALGORITHM);\n            mac.init(keySpec);\n            return mac;\n        } catch (NoSuchAlgorithmException | InvalidKeyException exception) {\n            throw new IllegalStateException(exception);\n        }\n    }\n\n    private static ByteBuffer sign(Mac mac, ByteBuffer input, int outLength) {\n        mac.reset();\n        mac.update(input);\n        byte[] signBytes = mac.doFinal();\n        if (signBytes.length != outLength) {\n            signBytes = Arrays.copyOf(signBytes, outLength);\n        }\n        return ByteBuffer.wrap(signBytes);\n    }\n\n    static ByteBuffer signCid(ByteBuffer input, int outLength) {\n        return sign(CID_MACS.get(), input, outLength);\n    }\n\n    static ByteBuffer signToken(ByteBuffer input, int outLength) {\n        return sign(TOKEN_MACS.get(), input, outLength);\n    }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "4dcfc4417b0d21c6863fc15d19f2fc0eaa47c616ac1fd21ef15665ce4bd12d62", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "remove-comments", "level": 1, "line_count": 71, "local_path": "comments/remove-comments/I01__netty__Hmac__506a2bd0.java", "order": 1, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 213, "comments_removed": 3}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-a75a506a2bd0-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 758, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-87699d37b4de-I02", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initial() {\n            return new2(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initial() {\n            return new2(TOKEN_KEY);\n        }\n    };\n\n    private static Mac new2(byte[] key) {\n        try {\n            SecretKeySpec key2 = new SecretKeySpec(key, ALGORITHM);\n            Mac mac = Mac.getInstance(ALGORITHM);\n            mac.init(key2);\n            return mac;\n        } catch (NoSuchAlgorithmException | InvalidKeyException exc) {\n            throw new IllegalStateException(exc);\n        }\n    }\n\n    private static ByteBuffer sig(Mac mac, ByteBuffer inp, int out) {\n        mac.reset();\n        mac.update(inp);\n        byte[] sign2 = mac.doFinal();\n        if (sign2.length != out) {\n            sign2 = Arrays.copyOf(sign2, out);\n        }\n        return ByteBuffer.wrap(sign2);\n    }\n\n    static ByteBuffer sign(ByteBuffer inp2, int out2) {\n        return sig(CID_MACS.get(), inp2, out2);\n    }\n\n    static ByteBuffer sign2(ByteBuffer inp3, int out3) {\n        return sig(TOKEN_MACS.get(), inp3, out3);\n    }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "03cd50249012387aaf1397cf5e5e211c0239b702f69b746c05cd321c6f981a9c", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "shorten-identifiers", "level": 2, "line_count": 71, "local_path": "identifiers/shorten-identifiers/I02__netty__Hmac__9d37b4de.java", "order": 2, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 19, "identifiers_declared": 12, "local_name_collisions_avoided": 6, "method_calls_renamed": 4, "method_declarations_renamed": 6, "method_name_collisions_avoided": 2, "method_name_groups": 5}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-87699d37b4de-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 759, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-edcec169462b-I03", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac fetchMessage() {\n            return derive(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac fetchMessage() {\n            return derive(TOKEN_KEY);\n        }\n    };\n\n    private static Mac derive(byte[] age) {\n        try {\n            SecretKeySpec nextKey = new SecretKeySpec(age, ALGORITHM);\n            Mac map = Mac.getInstance(ALGORITHM);\n            map.init(nextKey);\n            return map;\n        } catch (NoSuchAlgorithmException | InvalidKeyException localPath) {\n            throw new IllegalStateException(localPath);\n        }\n    }\n\n    private static ByteBuffer emit(Mac key, ByteBuffer order, int recentKey) {\n        key.reset();\n        key.update(order);\n        byte[] tempValue = key.doFinal();\n        if (tempValue.length != recentKey) {\n            tempValue = Arrays.copyOf(tempValue, recentKey);\n        }\n        return ByteBuffer.wrap(tempValue);\n    }\n\n    static ByteBuffer readKey(ByteBuffer index, int nextToken) {\n        return emit(CID_MACS.get(), index, nextToken);\n    }\n\n    static ByteBuffer checkItem(ByteBuffer batch, int sharedKey) {\n        return emit(TOKEN_MACS.get(), batch, sharedKey);\n    }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "217c8e62626466de41576c68a2090e4a53d95940efdcf3919ef0364dc8dc3261", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "mislead-identifiers", "level": 3, "line_count": 71, "local_path": "identifiers/mislead-identifiers/I03__netty__Hmac__c169462b.java", "order": 3, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 19, "identifiers_declared": 12, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 4, "local_exact_length_matches": 12, "local_random_pool_selections": 12, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 4, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 6, "method_exact_length_matches": 5, "method_name_groups": 5, "method_random_pool_selections": 5, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-edcec169462b-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 760, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c2e413487912-I04", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac a() {\n            return b(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac a() {\n            return b(TOKEN_KEY);\n        }\n    };\n\n    private static Mac b(byte[] a) {\n        try {\n            SecretKeySpec b = new SecretKeySpec(a, ALGORITHM);\n            Mac c = Mac.getInstance(ALGORITHM);\n            c.init(b);\n            return c;\n        } catch (NoSuchAlgorithmException | InvalidKeyException d) {\n            throw new IllegalStateException(d);\n        }\n    }\n\n    private static ByteBuffer c(Mac e, ByteBuffer f, int g) {\n        e.reset();\n        e.update(f);\n        byte[] h = e.doFinal();\n        if (h.length != g) {\n            h = Arrays.copyOf(h, g);\n        }\n        return ByteBuffer.wrap(h);\n    }\n\n    static ByteBuffer d(ByteBuffer i, int j) {\n        return c(CID_MACS.get(), i, j);\n    }\n\n    static ByteBuffer e(ByteBuffer k, int l) {\n        return c(TOKEN_MACS.get(), k, l);\n    }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "fbca9bdb8e9ab7c8f4e2fe9536e89b701a1ff4a5c48fe744e6570cf586b01b6d", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "garble-identifiers", "level": 4, "line_count": 71, "local_path": "identifiers/garble-identifiers/I04__netty__Hmac__13487912.java", "order": 4, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 19, "identifiers_declared": 12, "local_name_collisions_avoided": 0, "method_calls_renamed": 4, "method_declarations_renamed": 6, "method_name_collisions_avoided": 0, "method_name_groups": 5}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-c2e413487912-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 761, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-33a27efcadbe-I05", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[0x20];\n    private static final byte[] TOKEN_KEY = new byte[0x20];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(TOKEN_KEY);\n        }\n    };\n\n    private static Mac newMac(byte[] key) {\n        try {\n            SecretKeySpec keySpec = new SecretKeySpec(key, ALGORITHM);\n            Mac mac = Mac.getInstance(ALGORITHM);\n            mac.init(keySpec);\n            return mac;\n        } catch (NoSuchAlgorithmException | InvalidKeyException exception) {\n            throw new IllegalStateException(exception);\n        }\n    }\n\n    private static ByteBuffer sign(Mac mac, ByteBuffer input, int outLength) {\n        mac.reset();\n        mac.update(input);\n        byte[] signBytes = mac.doFinal();\n        if (signBytes.length != outLength) {\n            signBytes = Arrays.copyOf(signBytes, outLength);\n        }\n        return ByteBuffer.wrap(signBytes);\n    }\n\n    static ByteBuffer signCid(ByteBuffer input, int outLength) {\n        return sign(CID_MACS.get(), input, outLength);\n    }\n\n    static ByteBuffer signToken(ByteBuffer input, int outLength) {\n        return sign(TOKEN_MACS.get(), input, outLength);\n    }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "348c947910ccf072f59c4b34895a8315466c08ee1bbd7352732e2306c681480d", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "encode-integer-literals", "level": 5, "line_count": 71, "local_path": "expressions/encode-integer-literals/I05__netty__Hmac__7efcadbe.java", "order": 5, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 2}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-33a27efcadbe-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 762, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ff352f8d6e07-I06", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(TOKEN_KEY);\n        }\n    };\n\n    private static Mac newMac(byte[] key) {\n        try {\n            SecretKeySpec keySpec = new SecretKeySpec(key, ALGORITHM);\n            Mac mac = Mac.getInstance(ALGORITHM);\n            mac.init(keySpec);\n            return mac;\n        } catch (NoSuchAlgorithmException | InvalidKeyException exception) {\n            throw new IllegalStateException(exception);\n        }\n    }\n\n    private static ByteBuffer sign(Mac mac, ByteBuffer input, int outLength) {\n        mac.reset();\n        mac.update(input);\n        byte[] signBytes = mac.doFinal();\n        if (!((signBytes.length != outLength))) {} else {\n            signBytes = Arrays.copyOf(signBytes, outLength);\n        }\n        return ByteBuffer.wrap(signBytes);\n    }\n\n    static ByteBuffer signCid(ByteBuffer input, int outLength) {\n        return sign(CID_MACS.get(), input, outLength);\n    }\n\n    static ByteBuffer signToken(ByteBuffer input, int outLength) {\n        return sign(TOKEN_MACS.get(), input, outLength);\n    }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "859670f3715bac3725986cfc6f8afc57317cafa4e124550b35ed97e9ddd29965", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "invert-conditions", "level": 6, "line_count": 71, "local_path": "expressions/invert-conditions/I06__netty__Hmac__2f8d6e07.java", "order": 6, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-ff352f8d6e07-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 763, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-17d7d2a93ac6-I07", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\nif (((0x64F3 ^ 0x64F3) != 0)) { throw new AssertionError(); }\n\n            return newMac(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\nif (((0x15C7 ^ 0x15C7) != 0)) { throw new AssertionError(); }\n\n            return newMac(TOKEN_KEY);\n        }\n    };\n\n    private static Mac newMac(byte[] key) {\nif (((0xC1EE ^ 0xC1EE) != 0)) { throw new AssertionError(); }\n\n        try {\n            SecretKeySpec keySpec = new SecretKeySpec(key, ALGORITHM);\n            Mac mac = Mac.getInstance(ALGORITHM);\n            mac.init(keySpec);\n            return mac;\n        } catch (NoSuchAlgorithmException | InvalidKeyException exception) {\n            throw new IllegalStateException(exception);\n        }\n    }\n\n    private static ByteBuffer sign(Mac mac, ByteBuffer input, int outLength) {\nif (((0x75 ^ 0x75) != 0)) { throw new AssertionError(); }\n\n        mac.reset();\n        mac.update(input);\n        byte[] signBytes = mac.doFinal();\n        if (signBytes.length != outLength) {\n            signBytes = Arrays.copyOf(signBytes, outLength);\n        }\n        return ByteBuffer.wrap(signBytes);\n    }\n\n    static ByteBuffer signCid(ByteBuffer input, int outLength) {\nif (((0x5E53 ^ 0x5E53) != 0)) { throw new AssertionError(); }\n\n        return sign(CID_MACS.get(), input, outLength);\n    }\n\n    static ByteBuffer signToken(ByteBuffer input, int outLength) {\nif (((0xB8A ^ 0xB8A) != 0)) { throw new AssertionError(); }\n\n        return sign(TOKEN_MACS.get(), input, outLength);\n    }\n\n    private Hmac() {\nif (((0xFA27 ^ 0xFA27) != 0)) { throw new AssertionError(); }\n }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "bcca1e41e5c36bf2fd4ffd94e36ebb8638e32490e59aaef40281e456674bfcd4", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "insert-dead-branches", "level": 7, "line_count": 85, "local_path": "code-injection/insert-dead-branches/I07__netty__Hmac__d2a93ac6.java", "order": 7, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 7}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-17d7d2a93ac6-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 764, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dab7eb7bd438-I08", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(TOKEN_KEY);\n        }\n    };\n\n    private static Mac newMac(byte[] key) {\n        try {\n            SecretKeySpec keySpec = new SecretKeySpec(key, ALGORITHM);\n            Mac mac = Mac.getInstance(ALGORITHM);\n            mac.init(keySpec);\n            return mac;\n        } catch (NoSuchAlgorithmException | InvalidKeyException exception) {\n            throw new IllegalStateException(exception);\n        }\n    }\n\n    private static ByteBuffer sign(Mac mac, ByteBuffer input, int outLength) {\n{\n  int morningTemperature = 18;\n  int eveningTemperature = 14;\n  int lowerTemperature = morningTemperature;\n  if (eveningTemperature < lowerTemperature) {\n    lowerTemperature = eveningTemperature;\n  }\n}\n\n        mac.reset();\n        mac.update(input);\n        byte[] signBytes = mac.doFinal();\n        if (signBytes.length != outLength) {\n            signBytes = Arrays.copyOf(signBytes, outLength);\n        }\n        return ByteBuffer.wrap(signBytes);\n    }\n\n    static ByteBuffer signCid(ByteBuffer input, int outLength) {\n        return sign(CID_MACS.get(), input, outLength);\n    }\n\n    static ByteBuffer signToken(ByteBuffer input, int outLength) {\n        return sign(TOKEN_MACS.get(), input, outLength);\n    }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "f94d4164c18510264732024e0c5ffe1517894da85e5b23656d16eb83fb736c3c", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 80, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__Hmac__eb7bd438.java", "order": 8, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 4}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-dab7eb7bd438-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 765, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cdecb97323de-I09", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n{int lI0O_05b17a3d=0x9771,lI0O_dbdaa900=~lI0O_05b17a3d;lI0O_05b17a3d=(lI0O_05b17a3d&lI0O_dbdaa900)|(lI0O_05b17a3d^lI0O_05b17a3d);lI0O_dbdaa900^=lI0O_dbdaa900;}\n\n            return newMac(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(TOKEN_KEY);\n        }\n    };\n\n    private static Mac newMac(byte[] key) {\n        try {\n            SecretKeySpec keySpec = new SecretKeySpec(key, ALGORITHM);\n            Mac mac = Mac.getInstance(ALGORITHM);\n            mac.init(keySpec);\n            return mac;\n        } catch (NoSuchAlgorithmException | InvalidKeyException exception) {\n            throw new IllegalStateException(exception);\n        }\n    }\n\n    private static ByteBuffer sign(Mac mac, ByteBuffer input, int outLength) {\n        mac.reset();\n        mac.update(input);\n        byte[] signBytes = mac.doFinal();\n        if (signBytes.length != outLength) {\n            signBytes = Arrays.copyOf(signBytes, outLength);\n        }\n        return ByteBuffer.wrap(signBytes);\n    }\n\n    static ByteBuffer signCid(ByteBuffer input, int outLength) {\n        return sign(CID_MACS.get(), input, outLength);\n    }\n\n    static ByteBuffer signToken(ByteBuffer input, int outLength) {\n        return sign(TOKEN_MACS.get(), input, outLength);\n    }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "aae96dff2e0f9fbb5aabc3a7853fd6d1ba914a25aa7c125b2b0c5263fbd344ef", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 73, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__Hmac__b97323de.java", "order": 9, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 9}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-cdecb97323de-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 766, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eb7152c0f179-I10", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec; import java.nio.ByteBuffer;\nimport java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays; final class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY); rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() { @Override\n        protected Mac initialValue() {\n            return newMac(CID_KEY); } }; private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() { return newMac(TOKEN_KEY); }\n    };\n\n    private static Mac newMac(byte[] key) {\n        try {\n            SecretKeySpec keySpec = new SecretKeySpec(key, ALGORITHM); Mac mac = Mac.getInstance(ALGORITHM); mac.init(keySpec); return mac; } catch (NoSuchAlgorithmException | InvalidKeyException exception) { throw new IllegalStateException(exception); }\n    }\n\n    private static ByteBuffer sign(Mac mac, ByteBuffer input, int outLength) { mac.reset();\n        mac.update(input);\n        byte[] signBytes = mac.doFinal(); if (signBytes.length != outLength) { signBytes = Arrays.copyOf(signBytes, outLength);\n        } return ByteBuffer.wrap(signBytes);\n    } static ByteBuffer signCid(ByteBuffer input, int outLength) {\n        return sign(CID_MACS.get(), input, outLength);\n    }\n\n    static ByteBuffer signToken(ByteBuffer input, int outLength) {\n        return sign(TOKEN_MACS.get(), input, outLength); }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "dccabd190e94c7eedccc59ef05ef6de20fba75c1ed6b81ce53ccd5beaa58729b", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "partially-compact-layout", "level": 10, "line_count": 46, "local_path": "layout/partially-compact-layout/I10__netty__Hmac__52c0f179.java", "order": 10, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 56, "line_break_groups_removed": 22, "line_breaks_removed": 25, "whitespace_characters_removed": 163}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-eb7152c0f179-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 767, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1bfa19f0bc76-I11", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(TOKEN_KEY);\n        }\n    };\n\n    private static Mac newMac(byte[] key) {\n        try {\n            SecretKeySpec keySpec = new SecretKeySpec(key, ALGORITHM);\n            Mac mac = Mac.getInstance(ALGORITHM);\n            mac.init(keySpec);\n            return mac;\n        } catch (NoSuchAlgorithmException | InvalidKeyException exception) {\n            throw new IllegalStateException(exception);\n        }\n    }\n\n    private static ByteBuffer sign(Mac mac, ByteBuffer input, int outLength) {\n        mac.reset();\n        mac.update(input);\n        byte[] signBytes = mac.doFinal();\n        if (signBytes.length != outLength) {\n            signBytes = Arrays.copyOf(signBytes, outLength);\n        }\n        return ByteBuffer.wrap(signBytes);\n    }\n\n    static ByteBuffer signCid(ByteBuffer input, int outLength) {\n        return sign(CID_MACS.get(), input, outLength);\n    }\n\n    static ByteBuffer signToken(ByteBuffer input, int outLength) {\n        return sign(TOKEN_MACS.get(), input, outLength);\n    }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 71, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__Hmac__19f0bc76.java", "order": 11, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-1bfa19f0bc76-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 768, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-988b576753b7-I12", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(TOKEN_KEY);\n        }\n    };\n\n    private static Mac newMac(byte[] key) {\n        try {\n            \n            Mac mac = Mac.getInstance(ALGORITHM);\n            mac.init((new SecretKeySpec(key, ALGORITHM)));\n            return mac;\n        } catch (NoSuchAlgorithmException | InvalidKeyException exception) {\n            throw new IllegalStateException(exception);\n        }\n    }\n\n    private static ByteBuffer sign(Mac mac, ByteBuffer input, int outLength) {\n        mac.reset();\n        mac.update(input);\n        byte[] signBytes = mac.doFinal();\n        if (signBytes.length != outLength) {\n            signBytes = Arrays.copyOf(signBytes, outLength);\n        }\n        return ByteBuffer.wrap(signBytes);\n    }\n\n    static ByteBuffer signCid(ByteBuffer input, int outLength) {\n        return sign(CID_MACS.get(), input, outLength);\n    }\n\n    static ByteBuffer signToken(ByteBuffer input, int outLength) {\n        return sign(TOKEN_MACS.get(), input, outLength);\n    }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "440de91d8735b25734e71cf38b539facff10de48334e3a1b48b6730768ed4ee3", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 71, "local_path": "data-flow/inline-intermediate-variables/I12__netty__Hmac__576753b7.java", "order": 12, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-988b576753b7-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 769, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c67249f79d63-I13", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.concurrent.FastThreadLocal;\nimport javax.crypto.Mac;\nimport javax.crypto.spec.SecretKeySpec;\nimport java.nio.ByteBuffer;\nimport java.security.InvalidKeyException;\nimport java.security.NoSuchAlgorithmException;\nimport java.security.SecureRandom;\nimport java.util.Arrays;\n\nfinal class Hmac {\n\n    private static final String ALGORITHM = \"HmacSHA256\";\n\n    // Two independent keys so that CID signing and reset-token signing are\n    // cryptographically decoupled: an observer cannot derive one output from\n    // the other even when both use the same input value (RFC 9000 §21.11).\n    private static final byte[] CID_KEY   = new byte[32];\n    private static final byte[] TOKEN_KEY = new byte[32];\n\n    static {\n        SecureRandom rng = new SecureRandom();\n        rng.nextBytes(CID_KEY);\n        rng.nextBytes(TOKEN_KEY);\n    }\n\n    private static final FastThreadLocal<Mac> CID_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(CID_KEY);\n        }\n    };\n\n    private static final FastThreadLocal<Mac> TOKEN_MACS = new FastThreadLocal<Mac>() {\n        @Override\n        protected Mac initialValue() {\n            return newMac(TOKEN_KEY);\n        }\n    };\n\n    private static Mac newMac(byte[] key) {\n        try {\n            SecretKeySpec keySpec = new SecretKeySpec(key, ALGORITHM);\n            Mac mac = Mac.getInstance(ALGORITHM);\n            mac.init(keySpec);\n            return mac;\n        } catch (NoSuchAlgorithmException | InvalidKeyException exception) {\n            throw new IllegalStateException(exception);\n        }\n    }\n\n    private static ByteBuffer sign(Mac mac, ByteBuffer input, int outLength) {\n        mac.reset();\n        mac.update(input);\n        byte[] signBytes = mac.doFinal();\n        if (signBytes.length != outLength) {\n            signBytes = Arrays.copyOf(signBytes, outLength);\n        }\n        return ByteBuffer.wrap(signBytes);\n    }\n\n    static ByteBuffer signCid(ByteBuffer input, int outLength) {\n        return sign(CID_MACS.get(), input, outLength);\n    }\n\n    static ByteBuffer signToken(ByteBuffer input, int outLength) {\n        return sign(TOKEN_MACS.get(), input, outLength);\n    }\n\n    private Hmac() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__Hmac__7e3ed303.java", "base_sample_id": "source-343ceb6f9e652c88", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java", "interference": "lower-for-to-while", "level": 13, "line_count": 71, "local_path": "control-flow/lower-for-to-while/I13__netty__Hmac__49f79d63.java", "order": 13, "original_content_sha256": "2780fb85f6e710d354be99549412df4e13e8a304c9bf3828a2cebbfdc7188653", "parent_variant_id": "int-725b7e3ed303-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/Hmac.java#L28-L88", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "Hmac", "variant_id": "int-c67249f79d63-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 770, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-58b39e8d030e-SRC", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n/**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16;\n\n    // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int compressionRounds, int finalizationRounds, byte[] seed) {\n        if (seed.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(compressionRounds, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(finalizationRounds, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer keyBuffer = ByteBuffer.wrap(seed).order(ByteOrder.LITTLE_ENDIAN);\n        final long k0 = keyBuffer.getLong();\n        final long k1 = keyBuffer.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ k0;\n        initialStateV1 = INITIAL_STATE_V1 ^ k1;\n        initialStateV2 = INITIAL_STATE_V2 ^ k0;\n        initialStateV3 = INITIAL_STATE_V3 ^ k1;\n    }\n\n    long macHash(ByteBuffer input) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int remaining = input.remaining();\n        int position = input.position();\n        int len = remaining - (remaining % Long.BYTES);\n        boolean needsReverse = input.order() == ByteOrder.BIG_ENDIAN;\n        for (int offset = position; offset < len; offset +=  Long.BYTES) {\n            long m = input.getLong(offset);\n            if (needsReverse) {\n                // We use little-endian as in the paper.\n                m = Long.reverseBytes(m);\n            }\n            v3 ^= m;\n            for (int i = 0; i < compressionRounds; i++) {\n                sipround();\n            }\n            v0 ^= m;\n        }\n\n        // Get last bits.\n        final int left = remaining & (Long.BYTES - 1);\n        long b = (long) remaining << 56;\n        assert left < Long.BYTES;\n        switch (left) {\n            case 7:\n                b |= (long) input.get(position + len + 6) << 48;\n            case 6:\n                b |= (long) input.get(position + len + 5) << 40;\n            case 5:\n                b |= (long) input.get(position + len + 4) << 32;\n            case 4:\n                b |= (long) input.get(position + len + 3) << 24;\n            case 3:\n                b |= (long) input.get(position + len + 2) << 16;\n            case 2:\n                b |= (long) input.get(position + len + 1) << 8;\n            case 1:\n                b |= input.get(position + len);\n                break;\n            case 0:\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + left);\n        }\n\n        v3 ^= b;\n        for (int i = 0; i < compressionRounds; i++) {\n            sipround();\n        }\n\n        v0 ^= b;\n        v2 ^= 0xFF;\n        for (int i = 0; i < finalizationRounds; i++) {\n            sipround();\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void sipround() {\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 13);\n        v3 = Long.rotateLeft(v3, 16);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 32);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 17);\n        v3 = Long.rotateLeft(v3, 21);\n        v1 ^= v2;\n        v3 ^= v0;\n\n        v2 = Long.rotateLeft(v2, 32);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": null, "level": 0, "line_count": 133, "local_path": "source-original/SRC__netty__SipHash__9e8d030e.java", "order": 0, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-58b39e8d030e-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 925, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c29b66ae842a-I01", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n\n\n\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16;\n\n     \n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n     \n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L;  \n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL;  \n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L;  \n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;   \n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int compressionRounds, int finalizationRounds, byte[] seed) {\n        if (seed.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(compressionRounds, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(finalizationRounds, \"finalizationRounds\");\n\n         \n         \n        ByteBuffer keyBuffer = ByteBuffer.wrap(seed).order(ByteOrder.LITTLE_ENDIAN);\n        final long k0 = keyBuffer.getLong();\n        final long k1 = keyBuffer.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ k0;\n        initialStateV1 = INITIAL_STATE_V1 ^ k1;\n        initialStateV2 = INITIAL_STATE_V2 ^ k0;\n        initialStateV3 = INITIAL_STATE_V3 ^ k1;\n    }\n\n    long macHash(ByteBuffer input) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int remaining = input.remaining();\n        int position = input.position();\n        int len = remaining - (remaining % Long.BYTES);\n        boolean needsReverse = input.order() == ByteOrder.BIG_ENDIAN;\n        for (int offset = position; offset < len; offset +=  Long.BYTES) {\n            long m = input.getLong(offset);\n            if (needsReverse) {\n                 \n                m = Long.reverseBytes(m);\n            }\n            v3 ^= m;\n            for (int i = 0; i < compressionRounds; i++) {\n                sipround();\n            }\n            v0 ^= m;\n        }\n\n         \n        final int left = remaining & (Long.BYTES - 1);\n        long b = (long) remaining << 56;\n        assert left < Long.BYTES;\n        switch (left) {\n            case 7:\n                b |= (long) input.get(position + len + 6) << 48;\n            case 6:\n                b |= (long) input.get(position + len + 5) << 40;\n            case 5:\n                b |= (long) input.get(position + len + 4) << 32;\n            case 4:\n                b |= (long) input.get(position + len + 3) << 24;\n            case 3:\n                b |= (long) input.get(position + len + 2) << 16;\n            case 2:\n                b |= (long) input.get(position + len + 1) << 8;\n            case 1:\n                b |= input.get(position + len);\n                break;\n            case 0:\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + left);\n        }\n\n        v3 ^= b;\n        for (int i = 0; i < compressionRounds; i++) {\n            sipround();\n        }\n\n        v0 ^= b;\n        v2 ^= 0xFF;\n        for (int i = 0; i < finalizationRounds; i++) {\n            sipround();\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void sipround() {\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 13);\n        v3 = Long.rotateLeft(v3, 16);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 32);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 17);\n        v3 = Long.rotateLeft(v3, 21);\n        v1 ^= v2;\n        v3 ^= v0;\n\n        v2 = Long.rotateLeft(v2, 32);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "4b9461dee32aea4d6f52d8cbc9e54116f089d8086ba561ee2600d0eb99548a1b", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "remove-comments", "level": 1, "line_count": 133, "local_path": "comments/remove-comments/I01__netty__SipHash__66ae842a.java", "order": 1, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 436, "comments_removed": 11}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-c29b66ae842a-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 926, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2d16e45182e9-I02", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n/**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16;\n\n    // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int compression, int finalization, byte[] see) {\n        if (see.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(compression, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(finalization, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer key = ByteBuffer.wrap(see).order(ByteOrder.LITTLE_ENDIAN);\n        final long k = key.getLong();\n        final long k2 = key.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ k;\n        initialStateV1 = INITIAL_STATE_V1 ^ k2;\n        initialStateV2 = INITIAL_STATE_V2 ^ k;\n        initialStateV3 = INITIAL_STATE_V3 ^ k2;\n    }\n\n    long mac(ByteBuffer inp) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int rem = inp.remaining();\n        int pos = inp.position();\n        int len = rem - (rem % Long.BYTES);\n        boolean needs = inp.order() == ByteOrder.BIG_ENDIAN;\n        for (int off = pos; off < len; off +=  Long.BYTES) {\n            long m = inp.getLong(off);\n            if (needs) {\n                // We use little-endian as in the paper.\n                m = Long.reverseBytes(m);\n            }\n            v3 ^= m;\n            for (int i = 0; i < compressionRounds; i++) {\n                sip();\n            }\n            v0 ^= m;\n        }\n\n        // Get last bits.\n        final int lef = rem & (Long.BYTES - 1);\n        long b = (long) rem << 56;\n        assert lef < Long.BYTES;\n        switch (lef) {\n            case 7:\n                b |= (long) inp.get(pos + len + 6) << 48;\n            case 6:\n                b |= (long) inp.get(pos + len + 5) << 40;\n            case 5:\n                b |= (long) inp.get(pos + len + 4) << 32;\n            case 4:\n                b |= (long) inp.get(pos + len + 3) << 24;\n            case 3:\n                b |= (long) inp.get(pos + len + 2) << 16;\n            case 2:\n                b |= (long) inp.get(pos + len + 1) << 8;\n            case 1:\n                b |= inp.get(pos + len);\n                break;\n            case 0:\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + lef);\n        }\n\n        v3 ^= b;\n        for (int i = 0; i < compressionRounds; i++) {\n            sip();\n        }\n\n        v0 ^= b;\n        v2 ^= 0xFF;\n        for (int i = 0; i < finalizationRounds; i++) {\n            sip();\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void sip() {\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 13);\n        v3 = Long.rotateLeft(v3, 16);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 32);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 17);\n        v3 = Long.rotateLeft(v3, 21);\n        v1 ^= v2;\n        v3 ^= v0;\n\n        v2 = Long.rotateLeft(v2, 32);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "069a64d878f54f6463c0f9ccaf06d53dda5187e53c22617d885f5984f991009c", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "shorten-identifiers", "level": 2, "line_count": 133, "local_path": "identifiers/shorten-identifiers/I02__netty__SipHash__e45182e9.java", "order": 2, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 67, "identifiers_declared": 18, "local_name_collisions_avoided": 1, "method_calls_renamed": 3, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-2d16e45182e9-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 927, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b2be0f23cbe0-I03", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n/**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16;\n\n    // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int defaultBalance, int pendingAddress, byte[] data) {\n        if (data.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(defaultBalance, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(pendingAddress, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer remoteKey = ByteBuffer.wrap(data).order(ByteOrder.LITTLE_ENDIAN);\n        final long key = remoteKey.getLong();\n        final long map = remoteKey.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ key;\n        initialStateV1 = INITIAL_STATE_V1 ^ map;\n        initialStateV2 = INITIAL_STATE_V2 ^ key;\n        initialStateV3 = INITIAL_STATE_V3 ^ map;\n    }\n\n    long capture(ByteBuffer state) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int nextOrder = state.remaining();\n        int response = state.position();\n        int age = nextOrder - (nextOrder % Long.BYTES);\n        boolean activeRecord = state.order() == ByteOrder.BIG_ENDIAN;\n        for (int config = response; config < age; config +=  Long.BYTES) {\n            long user = state.getLong(config);\n            if (activeRecord) {\n                // We use little-endian as in the paper.\n                user = Long.reverseBytes(user);\n            }\n            v3 ^= user;\n            for (int flag = 0; flag < compressionRounds; flag++) {\n                sendNode();\n            }\n            v0 ^= user;\n        }\n\n        // Get last bits.\n        final int date = nextOrder & (Long.BYTES - 1);\n        long mode = (long) nextOrder << 56;\n        assert date < Long.BYTES;\n        switch (date) {\n            case 7:\n                mode |= (long) state.get(response + age + 6) << 48;\n            case 6:\n                mode |= (long) state.get(response + age + 5) << 40;\n            case 5:\n                mode |= (long) state.get(response + age + 4) << 32;\n            case 4:\n                mode |= (long) state.get(response + age + 3) << 24;\n            case 3:\n                mode |= (long) state.get(response + age + 2) << 16;\n            case 2:\n                mode |= (long) state.get(response + age + 1) << 8;\n            case 1:\n                mode |= state.get(response + age);\n                break;\n            case 0:\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + date);\n        }\n\n        v3 ^= mode;\n        for (int path = 0; path < compressionRounds; path++) {\n            sendNode();\n        }\n\n        v0 ^= mode;\n        v2 ^= 0xFF;\n        for (int node = 0; node < finalizationRounds; node++) {\n            sendNode();\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void sendNode() {\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 13);\n        v3 = Long.rotateLeft(v3, 16);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 32);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 17);\n        v3 = Long.rotateLeft(v3, 21);\n        v1 ^= v2;\n        v3 ^= v0;\n\n        v2 = Long.rotateLeft(v2, 32);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "22267bcb77e097b51e9b8c4def819109a4a89ee0880ec9043ae4cd91efa89d3c", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "mislead-identifiers", "level": 3, "line_count": 133, "local_path": "identifiers/mislead-identifiers/I03__netty__SipHash__0f23cbe0.java", "order": 3, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 67, "identifiers_declared": 18, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 17, "local_exact_length_matches": 9, "local_random_pool_selections": 18, "local_total_length_difference": 24, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 3, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 2, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-b2be0f23cbe0-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 928, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a35e7e631f57-I04", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n/**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16;\n\n    // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int a, int c, byte[] d) {\n        if (d.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(a, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(c, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer e = ByteBuffer.wrap(d).order(ByteOrder.LITTLE_ENDIAN);\n        final long f = e.getLong();\n        final long g = e.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ f;\n        initialStateV1 = INITIAL_STATE_V1 ^ g;\n        initialStateV2 = INITIAL_STATE_V2 ^ f;\n        initialStateV3 = INITIAL_STATE_V3 ^ g;\n    }\n\n    long a(ByteBuffer h) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int j = h.remaining();\n        int k = h.position();\n        int l = j - (j % Long.BYTES);\n        boolean n = h.order() == ByteOrder.BIG_ENDIAN;\n        for (int o = k; o < l; o +=  Long.BYTES) {\n            long m = h.getLong(o);\n            if (n) {\n                // We use little-endian as in the paper.\n                m = Long.reverseBytes(m);\n            }\n            v3 ^= m;\n            for (int i = 0; i < compressionRounds; i++) {\n                b();\n            }\n            v0 ^= m;\n        }\n\n        // Get last bits.\n        final int p = j & (Long.BYTES - 1);\n        long b = (long) j << 56;\n        assert p < Long.BYTES;\n        switch (p) {\n            case 7:\n                b |= (long) h.get(k + l + 6) << 48;\n            case 6:\n                b |= (long) h.get(k + l + 5) << 40;\n            case 5:\n                b |= (long) h.get(k + l + 4) << 32;\n            case 4:\n                b |= (long) h.get(k + l + 3) << 24;\n            case 3:\n                b |= (long) h.get(k + l + 2) << 16;\n            case 2:\n                b |= (long) h.get(k + l + 1) << 8;\n            case 1:\n                b |= h.get(k + l);\n                break;\n            case 0:\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + p);\n        }\n\n        v3 ^= b;\n        for (int i = 0; i < compressionRounds; i++) {\n            b();\n        }\n\n        v0 ^= b;\n        v2 ^= 0xFF;\n        for (int i = 0; i < finalizationRounds; i++) {\n            b();\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void b() {\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 13);\n        v3 = Long.rotateLeft(v3, 16);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 32);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 17);\n        v3 = Long.rotateLeft(v3, 21);\n        v1 ^= v2;\n        v3 ^= v0;\n\n        v2 = Long.rotateLeft(v2, 32);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "5f485ed401d1e6b3f1d9fdb31fb9e6ab7addf9a5419ddfff28dc942278fbc061", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "garble-identifiers", "level": 4, "line_count": 133, "local_path": "identifiers/garble-identifiers/I04__netty__SipHash__7e631f57.java", "order": 4, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 67, "identifiers_declared": 18, "local_name_collisions_avoided": 0, "method_calls_renamed": 3, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-a35e7e631f57-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 929, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c12c7e608374-I05", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n/**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 0x10;\n\n    // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int compressionRounds, int finalizationRounds, byte[] seed) {\n        if (seed.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(compressionRounds, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(finalizationRounds, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer keyBuffer = ByteBuffer.wrap(seed).order(ByteOrder.LITTLE_ENDIAN);\n        final long k0 = keyBuffer.getLong();\n        final long k1 = keyBuffer.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ k0;\n        initialStateV1 = INITIAL_STATE_V1 ^ k1;\n        initialStateV2 = INITIAL_STATE_V2 ^ k0;\n        initialStateV3 = INITIAL_STATE_V3 ^ k1;\n    }\n\n    long macHash(ByteBuffer input) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int remaining = input.remaining();\n        int position = input.position();\n        int len = remaining - (remaining % Long.BYTES);\n        boolean needsReverse = input.order() == ByteOrder.BIG_ENDIAN;\n        for (int offset = position; offset < len; offset +=  Long.BYTES) {\n            long m = input.getLong(offset);\n            if (needsReverse) {\n                // We use little-endian as in the paper.\n                m = Long.reverseBytes(m);\n            }\n            v3 ^= m;\n            for (int i = 0x0; i < compressionRounds; i++) {\n                sipround();\n            }\n            v0 ^= m;\n        }\n\n        // Get last bits.\n        final int left = remaining & (Long.BYTES - 0x1);\n        long b = (long) remaining << 0x38;\n        assert left < Long.BYTES;\n        switch (left) {\n            case 0x7:\n                b |= (long) input.get(position + len + 0x6) << 0x30;\n            case 0x6:\n                b |= (long) input.get(position + len + 0x5) << 0x28;\n            case 0x5:\n                b |= (long) input.get(position + len + 0x4) << 0x20;\n            case 0x4:\n                b |= (long) input.get(position + len + 0x3) << 0x18;\n            case 0x3:\n                b |= (long) input.get(position + len + 0x2) << 0x10;\n            case 0x2:\n                b |= (long) input.get(position + len + 0x1) << 0x8;\n            case 0x1:\n                b |= input.get(position + len);\n                break;\n            case 0x0:\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + left);\n        }\n\n        v3 ^= b;\n        for (int i = 0x0; i < compressionRounds; i++) {\n            sipround();\n        }\n\n        v0 ^= b;\n        v2 ^= 0xFF;\n        for (int i = 0x0; i < finalizationRounds; i++) {\n            sipround();\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void sipround() {\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 0xd);\n        v3 = Long.rotateLeft(v3, 0x10);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 0x20);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 0x11);\n        v3 = Long.rotateLeft(v3, 0x15);\n        v1 ^= v2;\n        v3 ^= v0;\n\n        v2 = Long.rotateLeft(v2, 0x20);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "89d125ade872f7d84eb6cb35c23d43b2a21d807f3172c20de40835539edc4a6f", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "encode-integer-literals", "level": 5, "line_count": 133, "local_path": "expressions/encode-integer-literals/I05__netty__SipHash__7e608374.java", "order": 5, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 32}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-c12c7e608374-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 930, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d794ad8dd7a8-I06", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n/**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16;\n\n    // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int compressionRounds, int finalizationRounds, byte[] seed) {\n        if (!((seed.length != SEED_LENGTH))) {} else {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(compressionRounds, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(finalizationRounds, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer keyBuffer = ByteBuffer.wrap(seed).order(ByteOrder.LITTLE_ENDIAN);\n        final long k0 = keyBuffer.getLong();\n        final long k1 = keyBuffer.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ k0;\n        initialStateV1 = INITIAL_STATE_V1 ^ k1;\n        initialStateV2 = INITIAL_STATE_V2 ^ k0;\n        initialStateV3 = INITIAL_STATE_V3 ^ k1;\n    }\n\n    long macHash(ByteBuffer input) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int remaining = input.remaining();\n        int position = input.position();\n        int len = remaining - (remaining % Long.BYTES);\n        boolean needsReverse = input.order() == ByteOrder.BIG_ENDIAN;\n        for (int offset = position; offset < len; offset +=  Long.BYTES) {\n            long m = input.getLong(offset);\n            if (!((needsReverse))) {} else {\n                // We use little-endian as in the paper.\n                m = Long.reverseBytes(m);\n            }\n            v3 ^= m;\n            for (int i = 0; i < compressionRounds; i++) {\n                sipround();\n            }\n            v0 ^= m;\n        }\n\n        // Get last bits.\n        final int left = remaining & (Long.BYTES - 1);\n        long b = (long) remaining << 56;\n        assert left < Long.BYTES;\n        switch (left) {\n            case 7:\n                b |= (long) input.get(position + len + 6) << 48;\n            case 6:\n                b |= (long) input.get(position + len + 5) << 40;\n            case 5:\n                b |= (long) input.get(position + len + 4) << 32;\n            case 4:\n                b |= (long) input.get(position + len + 3) << 24;\n            case 3:\n                b |= (long) input.get(position + len + 2) << 16;\n            case 2:\n                b |= (long) input.get(position + len + 1) << 8;\n            case 1:\n                b |= input.get(position + len);\n                break;\n            case 0:\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + left);\n        }\n\n        v3 ^= b;\n        for (int i = 0; i < compressionRounds; i++) {\n            sipround();\n        }\n\n        v0 ^= b;\n        v2 ^= 0xFF;\n        for (int i = 0; i < finalizationRounds; i++) {\n            sipround();\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void sipround() {\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 13);\n        v3 = Long.rotateLeft(v3, 16);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 32);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 17);\n        v3 = Long.rotateLeft(v3, 21);\n        v1 ^= v2;\n        v3 ^= v0;\n\n        v2 = Long.rotateLeft(v2, 32);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "7541434f45a50037e95eec97701878dcf0cfaec0be2b7ee35af95abf80cf5902", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "invert-conditions", "level": 6, "line_count": 133, "local_path": "expressions/invert-conditions/I06__netty__SipHash__ad8dd7a8.java", "order": 6, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-d794ad8dd7a8-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 931, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-17883390bee2-I07", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n/**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16;\n\n    // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int compressionRounds, int finalizationRounds, byte[] seed) {\nif (((0x883B ^ 0x883B) != 0)) { throw new AssertionError(); }\n\n        if (seed.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(compressionRounds, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(finalizationRounds, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer keyBuffer = ByteBuffer.wrap(seed).order(ByteOrder.LITTLE_ENDIAN);\n        final long k0 = keyBuffer.getLong();\n        final long k1 = keyBuffer.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ k0;\n        initialStateV1 = INITIAL_STATE_V1 ^ k1;\n        initialStateV2 = INITIAL_STATE_V2 ^ k0;\n        initialStateV3 = INITIAL_STATE_V3 ^ k1;\n    }\n\n    long macHash(ByteBuffer input) {\nif (((0xAD14 ^ 0xAD14) != 0)) { throw new AssertionError(); }\n\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int remaining = input.remaining();\n        int position = input.position();\n        int len = remaining - (remaining % Long.BYTES);\n        boolean needsReverse = input.order() == ByteOrder.BIG_ENDIAN;\n        for (int offset = position; offset < len; offset +=  Long.BYTES) {\n            long m = input.getLong(offset);\n            if (needsReverse) {\n                // We use little-endian as in the paper.\n                m = Long.reverseBytes(m);\n            }\n            v3 ^= m;\n            for (int i = 0; i < compressionRounds; i++) {\n                sipround();\n            }\n            v0 ^= m;\n        }\n\n        // Get last bits.\n        final int left = remaining & (Long.BYTES - 1);\n        long b = (long) remaining << 56;\n        assert left < Long.BYTES;\n        switch (left) {\n            case 7:\n                b |= (long) input.get(position + len + 6) << 48;\n            case 6:\n                b |= (long) input.get(position + len + 5) << 40;\n            case 5:\n                b |= (long) input.get(position + len + 4) << 32;\n            case 4:\n                b |= (long) input.get(position + len + 3) << 24;\n            case 3:\n                b |= (long) input.get(position + len + 2) << 16;\n            case 2:\n                b |= (long) input.get(position + len + 1) << 8;\n            case 1:\n                b |= input.get(position + len);\n                break;\n            case 0:\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + left);\n        }\n\n        v3 ^= b;\n        for (int i = 0; i < compressionRounds; i++) {\n            sipround();\n        }\n\n        v0 ^= b;\n        v2 ^= 0xFF;\n        for (int i = 0; i < finalizationRounds; i++) {\n            sipround();\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void sipround() {\nif (((0xA4D4 ^ 0xA4D4) != 0)) { throw new AssertionError(); }\n\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 13);\n        v3 = Long.rotateLeft(v3, 16);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 32);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 17);\n        v3 = Long.rotateLeft(v3, 21);\n        v1 ^= v2;\n        v3 ^= v0;\n\n        v2 = Long.rotateLeft(v2, 32);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "1ae2d9a507253bd8f9c9880462157028676842ffcd500a133f2c7978866307ba", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "insert-dead-branches", "level": 7, "line_count": 139, "local_path": "code-injection/insert-dead-branches/I07__netty__SipHash__3390bee2.java", "order": 7, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 3}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-17883390bee2-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 932, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a673a2b9265a-I08", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n/**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16;\n\n    // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int compressionRounds, int finalizationRounds, byte[] seed) {\n{\n  int factorial = 1;\n  for (int currentFactor = 2; currentFactor <= 4; currentFactor++) {\n    factorial *= currentFactor;\n  }\n}\n\n        if (seed.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(compressionRounds, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(finalizationRounds, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer keyBuffer = ByteBuffer.wrap(seed).order(ByteOrder.LITTLE_ENDIAN);\n        final long k0 = keyBuffer.getLong();\n        final long k1 = keyBuffer.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ k0;\n        initialStateV1 = INITIAL_STATE_V1 ^ k1;\n        initialStateV2 = INITIAL_STATE_V2 ^ k0;\n        initialStateV3 = INITIAL_STATE_V3 ^ k1;\n    }\n\n    long macHash(ByteBuffer input) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int remaining = input.remaining();\n        int position = input.position();\n        int len = remaining - (remaining % Long.BYTES);\n        boolean needsReverse = input.order() == ByteOrder.BIG_ENDIAN;\n        for (int offset = position; offset < len; offset +=  Long.BYTES) {\n            long m = input.getLong(offset);\n            if (needsReverse) {\n                // We use little-endian as in the paper.\n                m = Long.reverseBytes(m);\n            }\n            v3 ^= m;\n            for (int i = 0; i < compressionRounds; i++) {\n                sipround();\n            }\n            v0 ^= m;\n        }\n\n        // Get last bits.\n        final int left = remaining & (Long.BYTES - 1);\n        long b = (long) remaining << 56;\n        assert left < Long.BYTES;\n        switch (left) {\n            case 7:\n                b |= (long) input.get(position + len + 6) << 48;\n            case 6:\n                b |= (long) input.get(position + len + 5) << 40;\n            case 5:\n                b |= (long) input.get(position + len + 4) << 32;\n            case 4:\n                b |= (long) input.get(position + len + 3) << 24;\n            case 3:\n                b |= (long) input.get(position + len + 2) << 16;\n            case 2:\n                b |= (long) input.get(position + len + 1) << 8;\n            case 1:\n                b |= input.get(position + len);\n                break;\n            case 0:\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + left);\n        }\n\n        v3 ^= b;\n        for (int i = 0; i < compressionRounds; i++) {\n            sipround();\n        }\n\n        v0 ^= b;\n        v2 ^= 0xFF;\n        for (int i = 0; i < finalizationRounds; i++) {\n            sipround();\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void sipround() {\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 13);\n        v3 = Long.rotateLeft(v3, 16);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 32);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 17);\n        v3 = Long.rotateLeft(v3, 21);\n        v1 ^= v2;\n        v3 ^= v0;\n\n        v2 = Long.rotateLeft(v2, 32);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "a5ccdd715290ce1ed534e903d06b6faa0ebe8b757f874427ce27a91182a4548a", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 140, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__SipHash__a2b9265a.java", "order": 8, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 6}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-a673a2b9265a-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 933, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d16fd5abadff-I09", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n/**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16;\n\n    // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int compressionRounds, int finalizationRounds, byte[] seed) {\n        if (seed.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(compressionRounds, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(finalizationRounds, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer keyBuffer = ByteBuffer.wrap(seed).order(ByteOrder.LITTLE_ENDIAN);\n        final long k0 = keyBuffer.getLong();\n        final long k1 = keyBuffer.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ k0;\n        initialStateV1 = INITIAL_STATE_V1 ^ k1;\n        initialStateV2 = INITIAL_STATE_V2 ^ k0;\n        initialStateV3 = INITIAL_STATE_V3 ^ k1;\n    }\n\n    long macHash(ByteBuffer input) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int remaining = input.remaining();\n        int position = input.position();\n        int len = remaining - (remaining % Long.BYTES);\n        boolean needsReverse = input.order() == ByteOrder.BIG_ENDIAN;\n        for (int offset = position; offset < len; offset +=  Long.BYTES) {\n            long m = input.getLong(offset);\n            if (needsReverse) {\n                // We use little-endian as in the paper.\n                m = Long.reverseBytes(m);\n            }\n            v3 ^= m;\n            for (int i = 0; i < compressionRounds; i++) {\n                sipround();\n            }\n            v0 ^= m;\n        }\n\n        // Get last bits.\n        final int left = remaining & (Long.BYTES - 1);\n        long b = (long) remaining << 56;\n        assert left < Long.BYTES;\n        switch (left) {\n            case 7:\n                b |= (long) input.get(position + len + 6) << 48;\n            case 6:\n                b |= (long) input.get(position + len + 5) << 40;\n            case 5:\n                b |= (long) input.get(position + len + 4) << 32;\n            case 4:\n                b |= (long) input.get(position + len + 3) << 24;\n            case 3:\n                b |= (long) input.get(position + len + 2) << 16;\n            case 2:\n                b |= (long) input.get(position + len + 1) << 8;\n            case 1:\n                b |= input.get(position + len);\n                break;\n            case 0:\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + left);\n        }\n\n        v3 ^= b;\n        for (int i = 0; i < compressionRounds; i++) {\n            sipround();\n        }\n\n        v0 ^= b;\n        v2 ^= 0xFF;\n        for (int i = 0; i < finalizationRounds; i++) {\n            sipround();\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void sipround() {\n{int lI0O_18f2b296=0xB243;lI0O_18f2b296=(lI0O_18f2b296<<1)^(lI0O_18f2b296>>>1);lI0O_18f2b296&=0;}\n\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 13);\n        v3 = Long.rotateLeft(v3, 16);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 32);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 17);\n        v3 = Long.rotateLeft(v3, 21);\n        v1 ^= v2;\n        v3 ^= v0;\n\n        v2 = Long.rotateLeft(v2, 32);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "80260f8fd8ea6952722d285c13331dfb41a31a3d52d6b5bda45545ddd505c339", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 135, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__SipHash__d5abadff.java", "order": 9, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 3}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-d16fd5abadff-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 934, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0bf48bdbbfbe-I10", "source": "package io.netty.handler.codec.quic; import io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer; import java.nio.ByteOrder; /**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16; // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n private final long initialStateV0;\n    private final long initialStateV1; private final long initialStateV2;\n    private final long initialStateV3; private long v0;\n    private long v1; private long v2; private long v3;\n\n    SipHash(int compressionRounds, int finalizationRounds, byte[] seed) {\n        if (seed.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH); } this.compressionRounds = ObjectUtil.checkPositive(compressionRounds, \"compressionRounds\"); this.finalizationRounds = ObjectUtil.checkPositive(finalizationRounds, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer keyBuffer = ByteBuffer.wrap(seed).order(ByteOrder.LITTLE_ENDIAN); final long k0 = keyBuffer.getLong();\n        final long k1 = keyBuffer.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ k0; initialStateV1 = INITIAL_STATE_V1 ^ k1;\n        initialStateV2 = INITIAL_STATE_V2 ^ k0; initialStateV3 = INITIAL_STATE_V3 ^ k1; } long macHash(ByteBuffer input) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3; int remaining = input.remaining(); int position = input.position(); int len = remaining - (remaining % Long.BYTES); boolean needsReverse = input.order() == ByteOrder.BIG_ENDIAN;\n        for (int offset = position; offset < len; offset +=  Long.BYTES) {\n            long m = input.getLong(offset);\n            if (needsReverse) { // We use little-endian as in the paper.\n                m = Long.reverseBytes(m); } v3 ^= m;\n            for (int i = 0; i < compressionRounds; i++) {\n                sipround(); } v0 ^= m;\n        } // Get last bits.\n        final int left = remaining & (Long.BYTES - 1);\n        long b = (long) remaining << 56;\n        assert left < Long.BYTES;\n        switch (left) {\n            case 7:\n                b |= (long) input.get(position + len + 6) << 48;\n            case 6: b |= (long) input.get(position + len + 5) << 40;\n            case 5:\n                b |= (long) input.get(position + len + 4) << 32;\n            case 4: b |= (long) input.get(position + len + 3) << 24; case 3:\n                b |= (long) input.get(position + len + 2) << 16; case 2: b |= (long) input.get(position + len + 1) << 8;\n            case 1:\n                b |= input.get(position + len);\n                break; case 0: break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + left);\n        }\n\n        v3 ^= b; for (int i = 0; i < compressionRounds; i++) {\n            sipround();\n        } v0 ^= b;\n        v2 ^= 0xFF; for (int i = 0; i < finalizationRounds; i++) {\n            sipround(); }\n\n        return v0 ^ v1 ^ v2 ^ v3; }\n\n    private void sipround() {\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 13);\n        v3 = Long.rotateLeft(v3, 16);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 32);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 17);\n        v3 = Long.rotateLeft(v3, 21);\n        v1 ^= v2;\n        v3 ^= v0; v2 = Long.rotateLeft(v2, 32);\n    } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "4cfdf412c9934c5a8debce02ca186c4381dec8f88be0350a187ec850e7164c29", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "partially-compact-layout", "level": 10, "line_count": 85, "local_path": "layout/partially-compact-layout/I10__netty__SipHash__8bdbbfbe.java", "order": 10, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 103, "line_break_groups_removed": 41, "line_breaks_removed": 48, "whitespace_characters_removed": 335}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-0bf48bdbbfbe-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 935, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c62841e74667-I11", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n/**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16;\n\n    // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int compressionRounds, int finalizationRounds, byte[] seed) {\n        if (seed.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(compressionRounds, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(finalizationRounds, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer keyBuffer = ByteBuffer.wrap(seed).order(ByteOrder.LITTLE_ENDIAN);\n        final long k0 = keyBuffer.getLong();\n        final long k1 = keyBuffer.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ k0;\n        initialStateV1 = INITIAL_STATE_V1 ^ k1;\n        initialStateV2 = INITIAL_STATE_V2 ^ k0;\n        initialStateV3 = INITIAL_STATE_V3 ^ k1;\n    }\n\n    long macHash(ByteBuffer input) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int remaining = input.remaining();\n        int position = input.position();\n        int len = remaining - (remaining % Long.BYTES);\n        boolean needsReverse = input.order() == ByteOrder.BIG_ENDIAN;\n        for (int offset = position; offset < len; offset +=  Long.BYTES) {\n            long m = input.getLong(offset);\n            if (needsReverse) {\n                // We use little-endian as in the paper.\n                m = Long.reverseBytes(m);\n            }\n            v3 ^= m;\n            final int a = 1;\n            final int c = -1;\n            for (int i = (a + c); i < compressionRounds; i++) {\n                sipround();\n            }\n            v0 ^= m;\n        }\n\n        // Get last bits.\n        final int d = 2;\n        final int e = -1;\n        final int left = remaining & (Long.BYTES - (d + e));\n        final int f = 28;\n        final int g = 28;\n        long b = (long) remaining << (f + g);\n        assert left < Long.BYTES;\n        final int h = 3;\n        final int j = 4;\n        final int k = 3;\n        final int l = 3;\n        final int n = 24;\n        final int o = 24;\n        final int p = 3;\n        final int q = 3;\n        final int r = 2;\n        final int s = 3;\n        final int t = 20;\n        final int u = 20;\n        final int v = 2;\n        final int w = 3;\n        final int x = 2;\n        final int y = 2;\n        final int z = 16;\n        final int aa = 16;\n        final int ab = 2;\n        final int ac = 2;\n        final int ad = 1;\n        final int ae = 2;\n        final int af = 12;\n        final int ag = 12;\n        final int ah = 1;\n        final int ai = 2;\n        final int aj = 1;\n        final int ak = 1;\n        final int al = 8;\n        final int am = 8;\n        final int an = 1;\n        final int ao = 1;\n        final int ap = 2;\n        final int aq = -1;\n        final int ar = 4;\n        final int as = 4;\n        final int at = 2;\n        final int au = -1;\n        final int av = 1;\n        final int aw = -1;\n        switch (left) {\n            case (h + j):\n                b |= (long) input.get(position + len + (k + l)) << (n + o);\n            case (p + q):\n                b |= (long) input.get(position + len + (r + s)) << (t + u);\n            case (v + w):\n                b |= (long) input.get(position + len + (x + y)) << (z + aa);\n            case (ab + ac):\n                b |= (long) input.get(position + len + (ad + ae)) << (af + ag);\n            case (ah + ai):\n                b |= (long) input.get(position + len + (aj + ak)) << (al + am);\n            case (an + ao):\n                b |= (long) input.get(position + len + (ap + aq)) << (ar + as);\n            case (at + au):\n                b |= input.get(position + len);\n                break;\n            case (av + aw):\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + left);\n        }\n\n        v3 ^= b;\n        final int ax = 1;\n        final int ay = -1;\n        for (int i = (ax + ay); i < compressionRounds; i++) {\n            sipround();\n        }\n\n        v0 ^= b;\n        v2 ^= 0xFF;\n        final int az = 1;\n        final int ba = -1;\n        for (int i = (az + ba); i < finalizationRounds; i++) {\n            sipround();\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void sipround() {\n        v0 += v1;\n        v2 += v3;\n        final int bb = 6;\n        final int bc = 7;\n        v1 = Long.rotateLeft(v1, (bb + bc));\n        final int bd = 8;\n        final int be = 8;\n        v3 = Long.rotateLeft(v3, (bd + be));\n        v1 ^= v0;\n        v3 ^= v2;\n\n        final int bf = 16;\n        final int bg = 16;\n        v0 = Long.rotateLeft(v0, (bf + bg));\n\n        v2 += v1;\n        v0 += v3;\n        final int bh = 8;\n        final int bi = 9;\n        v1 = Long.rotateLeft(v1, (bh + bi));\n        final int bj = 10;\n        final int bk = 11;\n        v3 = Long.rotateLeft(v3, (bj + bk));\n        v1 ^= v2;\n        v3 ^= v0;\n\n        final int bl = 16;\n        final int bm = 16;\n        v2 = Long.rotateLeft(v2, (bl + bm));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c9c1ba79512c72d2dfced1b644009c1c7a7bfa3327c27d8b1cf06f7d77553c2a", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 195, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__SipHash__41e74667.java", "order": 11, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 31, "intermediate_variables_introduced": 62, "statements_augmented": 12}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-c62841e74667-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 936, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cc1a6009be26-I12", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n/**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16;\n\n    // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int compressionRounds, int finalizationRounds, byte[] seed) {\n        if (seed.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(compressionRounds, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(finalizationRounds, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer keyBuffer = ByteBuffer.wrap(seed).order(ByteOrder.LITTLE_ENDIAN);\n        final long k0 = keyBuffer.getLong();\n        final long k1 = keyBuffer.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ k0;\n        initialStateV1 = INITIAL_STATE_V1 ^ k1;\n        initialStateV2 = INITIAL_STATE_V2 ^ k0;\n        initialStateV3 = INITIAL_STATE_V3 ^ k1;\n    }\n\n    long macHash(ByteBuffer input) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int remaining = input.remaining();\n        int position = input.position();\n        int len = remaining - (remaining % Long.BYTES);\n        boolean needsReverse = input.order() == ByteOrder.BIG_ENDIAN;\n        for (int offset = position; offset < len; offset +=  Long.BYTES) {\n            long m = input.getLong(offset);\n            if (needsReverse) {\n                // We use little-endian as in the paper.\n                m = Long.reverseBytes(m);\n            }\n            v3 ^= m;\n            for (int i = 0; i < compressionRounds; i++) {\n                sipround();\n            }\n            v0 ^= m;\n        }\n\n        // Get last bits.\n        final int left = remaining & (Long.BYTES - 1);\n        long b = (long) remaining << 56;\n        assert left < Long.BYTES;\n        switch (left) {\n            case 7:\n                b |= (long) input.get(position + len + 6) << 48;\n            case 6:\n                b |= (long) input.get(position + len + 5) << 40;\n            case 5:\n                b |= (long) input.get(position + len + 4) << 32;\n            case 4:\n                b |= (long) input.get(position + len + 3) << 24;\n            case 3:\n                b |= (long) input.get(position + len + 2) << 16;\n            case 2:\n                b |= (long) input.get(position + len + 1) << 8;\n            case 1:\n                b |= input.get(position + len);\n                break;\n            case 0:\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + left);\n        }\n\n        v3 ^= b;\n        for (int i = 0; i < compressionRounds; i++) {\n            sipround();\n        }\n\n        v0 ^= b;\n        v2 ^= 0xFF;\n        for (int i = 0; i < finalizationRounds; i++) {\n            sipround();\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void sipround() {\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 13);\n        v3 = Long.rotateLeft(v3, 16);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 32);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 17);\n        v3 = Long.rotateLeft(v3, 21);\n        v1 ^= v2;\n        v3 ^= v0;\n\n        v2 = Long.rotateLeft(v2, 32);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 133, "local_path": "data-flow/inline-intermediate-variables/I12__netty__SipHash__6009be26.java", "order": 12, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-cc1a6009be26-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 937, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a5d112d93c8e-I13", "source": "package io.netty.handler.codec.quic;\nimport io.netty.util.internal.ObjectUtil;\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\n/**\n * <a href=\"https://www.aumasson.jp/siphash/siphash.pdf\">Siphash implementation</a>.\n */\nfinal class SipHash {\n\n    static final int SEED_LENGTH = 16;\n\n    // Make this class allocation free as soon as its constructed.\n    private final int compressionRounds;\n    private final int finalizationRounds;\n\n    // As specified in https://www.aumasson.jp/siphash/siphash.pdf\n    private static final long INITIAL_STATE_V0 = 0x736f6d6570736575L; // \"somepseu\"\n    private static final long INITIAL_STATE_V1 = 0x646f72616e646f6dL; // \"dorandom\"\n    private static final long INITIAL_STATE_V2 = 0x6c7967656e657261L; // \"lygenera\"\n    private static final long INITIAL_STATE_V3 = 0x7465646279746573L;  // \"tedbytes\"\n\n    private final long initialStateV0;\n    private final long initialStateV1;\n    private final long initialStateV2;\n    private final long initialStateV3;\n\n    private long v0;\n    private long v1;\n    private long v2;\n    private long v3;\n\n    SipHash(int compressionRounds, int finalizationRounds, byte[] seed) {\n        if (seed.length != SEED_LENGTH) {\n            throw new IllegalArgumentException(\"seed must be of length \" + SEED_LENGTH);\n        }\n        this.compressionRounds = ObjectUtil.checkPositive(compressionRounds, \"compressionRounds\");\n        this.finalizationRounds = ObjectUtil.checkPositive(finalizationRounds, \"finalizationRounds\");\n\n        // Wrap the seed to extract two longs that will be used to generate the initial state.\n        // Use little-endian as in the paper.\n        ByteBuffer keyBuffer = ByteBuffer.wrap(seed).order(ByteOrder.LITTLE_ENDIAN);\n        final long k0 = keyBuffer.getLong();\n        final long k1 = keyBuffer.getLong();\n\n        initialStateV0 = INITIAL_STATE_V0 ^ k0;\n        initialStateV1 = INITIAL_STATE_V1 ^ k1;\n        initialStateV2 = INITIAL_STATE_V2 ^ k0;\n        initialStateV3 = INITIAL_STATE_V3 ^ k1;\n    }\n\n    long macHash(ByteBuffer input) {\n        v0 = initialStateV0;\n        v1 = initialStateV1;\n        v2 = initialStateV2;\n        v3 = initialStateV3;\n        int remaining = input.remaining();\n        int position = input.position();\n        int len = remaining - (remaining % Long.BYTES);\n        boolean needsReverse = input.order() == ByteOrder.BIG_ENDIAN;\n        {\n          int offset = position;\n          while (offset < len) {\n            long m = input.getLong(offset);\n            if (needsReverse) {\n                // We use little-endian as in the paper.\n                m = Long.reverseBytes(m);\n            }\n            v3 ^= m;\n            {\n              int i = 0;\n              while (i < compressionRounds) {\n                sipround();\n                i++;\n              }\n            }\n            v0 ^= m;\n            offset +=  Long.BYTES;\n          }\n        }\n\n        // Get last bits.\n        final int left = remaining & (Long.BYTES - 1);\n        long b = (long) remaining << 56;\n        assert left < Long.BYTES;\n        switch (left) {\n            case 7:\n                b |= (long) input.get(position + len + 6) << 48;\n            case 6:\n                b |= (long) input.get(position + len + 5) << 40;\n            case 5:\n                b |= (long) input.get(position + len + 4) << 32;\n            case 4:\n                b |= (long) input.get(position + len + 3) << 24;\n            case 3:\n                b |= (long) input.get(position + len + 2) << 16;\n            case 2:\n                b |= (long) input.get(position + len + 1) << 8;\n            case 1:\n                b |= input.get(position + len);\n                break;\n            case 0:\n                break;\n            default:\n                throw new IllegalStateException(\"Unexpected value: \" + left);\n        }\n\n        v3 ^= b;\n        {\n          int i = 0;\n          while (i < compressionRounds) {\n            sipround();\n            i++;\n          }\n        }\n\n        v0 ^= b;\n        v2 ^= 0xFF;\n        {\n          int i = 0;\n          while (i < finalizationRounds) {\n            sipround();\n            i++;\n          }\n        }\n\n        return v0 ^ v1 ^ v2 ^ v3;\n    }\n\n    private void sipround() {\n        v0 += v1;\n        v2 += v3;\n        v1 = Long.rotateLeft(v1, 13);\n        v3 = Long.rotateLeft(v3, 16);\n        v1 ^= v0;\n        v3 ^= v2;\n\n        v0 = Long.rotateLeft(v0, 32);\n\n        v2 += v1;\n        v0 += v3;\n        v1 = Long.rotateLeft(v1, 17);\n        v3 = Long.rotateLeft(v3, 21);\n        v1 ^= v2;\n        v3 ^= v0;\n\n        v2 = Long.rotateLeft(v2, 32);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__SipHash__9e8d030e.java", "base_sample_id": "source-6074f2ca4df70704", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "b7af7f46fedfef7593b2f9d4d8abe75686f4893831f3691a64fb39ddf9546b4a", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java", "interference": "lower-for-to-while", "level": 13, "line_count": 149, "local_path": "control-flow/lower-for-to-while/I13__netty__SipHash__12d93c8e.java", "order": 13, "original_content_sha256": "173661b2d2932ecaeacaa180b1701f44cfb5a8642d8b2df7c1da9deb11d90ecf", "parent_variant_id": "int-58b39e8d030e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-classes-quic/src/main/java/io/netty/handler/codec/quic/SipHash.java#L23-L150", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 4, "classic_for_loops_found": 4, "classic_for_loops_lowered_to_while": 4, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 4, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "SipHash", "variant_id": "int-a5d112d93c8e-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 938, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-343c75913829-SRC", "source": "package io.netty.handler.codec.http3;\n\n/**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState {\n    /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean started() {\n            return false;\n        }\n\n        @Override\n        public boolean receivedFinalHeaders() {\n            return false;\n        }\n\n        @Override\n        public boolean terminated() {\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */\n    boolean started();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean receivedFinalHeaders();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */\n    boolean terminated();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": null, "level": 0, "line_count": 51, "local_path": "source-original/SRC__netty__Http3RequestStreamCodecState__75913829.java", "order": 0, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-343c75913829-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 771, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-350dec82e92f-I01", "source": "package io.netty.handler.codec.http3;\n\n\n\n\n\n\ninterface Http3RequestStreamCodecState {\n    \n\n\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean started() {\n            return false;\n        }\n\n        @Override\n        public boolean receivedFinalHeaders() {\n            return false;\n        }\n\n        @Override\n        public boolean terminated() {\n            return false;\n        }\n    };\n\n    \n\n\n\n\n\n    boolean started();\n\n    \n\n\n\n\n\n    boolean receivedFinalHeaders();\n\n    \n\n\n\n\n    boolean terminated();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "ae87ce6673e48b9a8b504a733b5be003acaf058576c0f4e66e787ef57e59d07d", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "remove-comments", "level": 1, "line_count": 51, "local_path": "comments/remove-comments/I01__netty__Http3RequestStreamCodecState__ec82e92f.java", "order": 1, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 942, "comments_removed": 5}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-350dec82e92f-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 772, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8519ec6ba398-I02", "source": "package io.netty.handler.codec.http3;\n\n/**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState {\n    /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean sta() {\n            return false;\n        }\n\n        @Override\n        public boolean received() {\n            return false;\n        }\n\n        @Override\n        public boolean ter() {\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */\n    boolean sta();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean received();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */\n    boolean ter();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "5695bebcbb546ff0911168fc9c033f9a829f9258094e0c72178fe973d2269e4f", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "shorten-identifiers", "level": 2, "line_count": 51, "local_path": "identifiers/shorten-identifiers/I02__netty__Http3RequestStreamCodecState__ec6ba398.java", "order": 2, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 6, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-8519ec6ba398-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 773, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ce8250a64dd3-I03", "source": "package io.netty.handler.codec.http3;\n\n/**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState {\n    /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean mapData() {\n            return false;\n        }\n\n        @Override\n        public boolean validateSession() {\n            return false;\n        }\n\n        @Override\n        public boolean checkState() {\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */\n    boolean mapData();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean validateSession();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */\n    boolean checkState();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "c3a81d51277917a977029b419cc97bfbbb096936303235cea3e2460af9988393", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "mislead-identifiers", "level": 3, "line_count": 51, "local_path": "identifiers/mislead-identifiers/I03__netty__Http3RequestStreamCodecState__50a64dd3.java", "order": 3, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 0, "local_random_pool_selections": 0, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 6, "method_exact_length_matches": 2, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 5}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-ce8250a64dd3-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 774, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6b7fb14c18b9-I04", "source": "package io.netty.handler.codec.http3;\n\n/**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState {\n    /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean a() {\n            return false;\n        }\n\n        @Override\n        public boolean b() {\n            return false;\n        }\n\n        @Override\n        public boolean c() {\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */\n    boolean a();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean b();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */\n    boolean c();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "3caca4a77d0ec35ead5e6545678f0e8ccecbbedbc4a72406442484202f55ded7", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "garble-identifiers", "level": 4, "line_count": 51, "local_path": "identifiers/garble-identifiers/I04__netty__Http3RequestStreamCodecState__b14c18b9.java", "order": 4, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 6, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-6b7fb14c18b9-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 775, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bf03fed57907-I05", "source": "package io.netty.handler.codec.http3;\n\n/**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState {\n    /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean started() {\n            return false;\n        }\n\n        @Override\n        public boolean receivedFinalHeaders() {\n            return false;\n        }\n\n        @Override\n        public boolean terminated() {\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */\n    boolean started();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean receivedFinalHeaders();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */\n    boolean terminated();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "encode-integer-literals", "level": 5, "line_count": 51, "local_path": "expressions/encode-integer-literals/I05__netty__Http3RequestStreamCodecState__fed57907.java", "order": 5, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-bf03fed57907-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 776, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2dd0377da942-I06", "source": "package io.netty.handler.codec.http3;\n\n/**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState {\n    /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean started() {\n            return false;\n        }\n\n        @Override\n        public boolean receivedFinalHeaders() {\n            return false;\n        }\n\n        @Override\n        public boolean terminated() {\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */\n    boolean started();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean receivedFinalHeaders();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */\n    boolean terminated();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "invert-conditions", "level": 6, "line_count": 51, "local_path": "expressions/invert-conditions/I06__netty__Http3RequestStreamCodecState__377da942.java", "order": 6, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-2dd0377da942-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 777, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9bff1108b3df-I07", "source": "package io.netty.handler.codec.http3;\n\n/**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState {\n    /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean started() {\nif (((0x8455 ^ 0x8455) != 0)) { throw new AssertionError(); }\n\n            return false;\n        }\n\n        @Override\n        public boolean receivedFinalHeaders() {\nif (((0xCC3F ^ 0xCC3F) != 0)) { throw new AssertionError(); }\n\n            return false;\n        }\n\n        @Override\n        public boolean terminated() {\nif (((0xE358 ^ 0xE358) != 0)) { throw new AssertionError(); }\n\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */\n    boolean started();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean receivedFinalHeaders();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */\n    boolean terminated();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "bc9e31db3a6a9db6a19a546b55175c67e4f4277653ad06a7d23d41efd6246690", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "insert-dead-branches", "level": 7, "line_count": 57, "local_path": "code-injection/insert-dead-branches/I07__netty__Http3RequestStreamCodecState__1108b3df.java", "order": 7, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 3}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-9bff1108b3df-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 778, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b8d4f121a683-I08", "source": "package io.netty.handler.codec.http3;\n\n/**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState {\n    /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean started() {\n            return false;\n        }\n\n        @Override\n        public boolean receivedFinalHeaders() {\n{\n  int previousNumber = 0;\n  int currentNumber = 1;\n  for (int sequenceStep = 0; sequenceStep < 4; sequenceStep++) {\n    int nextNumber = previousNumber + currentNumber;\n    previousNumber = currentNumber;\n    currentNumber = nextNumber;\n  }\n}\n\n            return false;\n        }\n\n        @Override\n        public boolean terminated() {\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */\n    boolean started();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean receivedFinalHeaders();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */\n    boolean terminated();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "346e8b8b3d8905564f85f62527aa0a880aceeb621f569ad3f33d710220c873d6", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 61, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__Http3RequestStreamCodecState__f121a683.java", "order": 8, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 9, "readable_template_index": 8}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-b8d4f121a683-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 779, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a8f41aae8240-I09", "source": "package io.netty.handler.codec.http3;\n\n/**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState {\n    /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean started() {\n            return false;\n        }\n\n        @Override\n        public boolean receivedFinalHeaders() {\n            return false;\n        }\n\n        @Override\n        public boolean terminated() {\n{int lI0O_d22aef78=0x1E06;lI0O_d22aef78=((lI0O_d22aef78^0x1E06)|0)&-1;if(((lI0O_d22aef78&1)==1)){lI0O_d22aef78^=lI0O_d22aef78;}}\n\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */\n    boolean started();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean receivedFinalHeaders();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */\n    boolean terminated();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "aa4a537c2e096a213cc493d4ece99c87494f859c65d78dfa0f2744affaadec24", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 53, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__Http3RequestStreamCodecState__1aae8240.java", "order": 9, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-a8f41aae8240-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 780, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-764e33866904-I10", "source": "package io.netty.handler.codec.http3; /**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState { /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */ Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override public boolean started() {\n            return false;\n        }\n\n        @Override public boolean receivedFinalHeaders() {\n            return false;\n        } @Override\n        public boolean terminated() {\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */ boolean started();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean receivedFinalHeaders();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */ boolean terminated(); }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "d530dc1b70032d28390f5a3cf1031de7006535c29f50eea236287cd48cf43438", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "partially-compact-layout", "level": 10, "line_count": 40, "local_path": "layout/partially-compact-layout/I10__netty__Http3RequestStreamCodecState__33866904.java", "order": 10, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 24, "line_break_groups_removed": 9, "line_breaks_removed": 11, "whitespace_characters_removed": 42}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-764e33866904-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 781, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9d208137ef93-I11", "source": "package io.netty.handler.codec.http3;\n\n/**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState {\n    /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean started() {\n            return false;\n        }\n\n        @Override\n        public boolean receivedFinalHeaders() {\n            return false;\n        }\n\n        @Override\n        public boolean terminated() {\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */\n    boolean started();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean receivedFinalHeaders();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */\n    boolean terminated();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 51, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__Http3RequestStreamCodecState__8137ef93.java", "order": 11, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-9d208137ef93-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 782, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2f019cc1e9a9-I12", "source": "package io.netty.handler.codec.http3;\n\n/**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState {\n    /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean started() {\n            return false;\n        }\n\n        @Override\n        public boolean receivedFinalHeaders() {\n            return false;\n        }\n\n        @Override\n        public boolean terminated() {\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */\n    boolean started();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean receivedFinalHeaders();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */\n    boolean terminated();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 51, "local_path": "data-flow/inline-intermediate-variables/I12__netty__Http3RequestStreamCodecState__9cc1e9a9.java", "order": 12, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-2f019cc1e9a9-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 783, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f6bfc72d2fdd-I13", "source": "package io.netty.handler.codec.http3;\n\n/**\n * State of encoding or decoding for a stream following the <a\n * href=\"https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-http-message-exchanges\">\n * HTTP message exchange semantics</a>\n */\ninterface Http3RequestStreamCodecState {\n    /**\n     * An implementation of {@link Http3RequestStreamCodecState} that managed no state.\n     */\n    Http3RequestStreamCodecState NO_STATE = new Http3RequestStreamCodecState() {\n        @Override\n        public boolean started() {\n            return false;\n        }\n\n        @Override\n        public boolean receivedFinalHeaders() {\n            return false;\n        }\n\n        @Override\n        public boolean terminated() {\n            return false;\n        }\n    };\n\n    /**\n     * If any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this stream.\n     *\n     * @return {@code true} if any {@link Http3HeadersFrame} or {@link Http3DataFrame} has been received/sent on this\n     * stream.\n     */\n    boolean started();\n\n    /**\n     * If a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame} starts.\n     *\n     * @return {@code true} if a final {@link Http3HeadersFrame} has been received/sent before {@link Http3DataFrame}\n     * starts\n     */\n    boolean receivedFinalHeaders();\n\n    /**\n     * If no more frames are expected on this stream.\n     *\n     * @return {@code true} if no more frames are expected on this stream.\n     */\n    boolean terminated();\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__Http3RequestStreamCodecState__75913829.java", "base_sample_id": "source-8fec61385af79191", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java", "interference": "lower-for-to-while", "level": 13, "line_count": 51, "local_path": "control-flow/lower-for-to-while/I13__netty__Http3RequestStreamCodecState__c72d2fdd.java", "order": 13, "original_content_sha256": "6578644d7d27f439ccb25b9abd29e58952821438a4f2556caa84ab5cdc1f79b9", "parent_variant_id": "int-343c75913829-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-http3/src/main/java/io/netty/handler/codec/http3/Http3RequestStreamCodecState.java#L18-L66", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "Http3RequestStreamCodecState", "variant_id": "int-f6bfc72d2fdd-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 784, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-983b7aa7fcf0-SRC", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme authScheme) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(authScheme, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */\n    public SocksAuthScheme authScheme() {\n        return authScheme;\n    }\n\n    @Override\n    public void encodeAsByteBuf(ByteBuf byteBuf) {\n        byteBuf.writeByte(protocolVersion().byteValue());\n        byteBuf.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": null, "level": 0, "line_count": 33, "local_path": "source-original/SRC__netty__SocksInitResponse__7aa7fcf0.java", "order": 0, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-983b7aa7fcf0-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 953, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-81e03ae9a774-I01", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n\n\n\n\n\n\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme authScheme) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(authScheme, \"authScheme\");\n    }\n\n    \n\n\n\n\n    public SocksAuthScheme authScheme() {\n        return authScheme;\n    }\n\n    @Override\n    public void encodeAsByteBuf(ByteBuf byteBuf) {\n        byteBuf.writeByte(protocolVersion().byteValue());\n        byteBuf.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "e680ef998c604623c111fe3e510b7693f6d5aeb36f4cae5aa993cc474e1f30f8", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "remove-comments", "level": 1, "line_count": 33, "local_path": "comments/remove-comments/I01__netty__SocksInitResponse__3ae9a774.java", "order": 1, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 258, "comments_removed": 2}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-81e03ae9a774-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 954, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ccdcbc3b3e90-I02", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme auth) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(auth, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */\n    public SocksAuthScheme auth() {\n        return authScheme;\n    }\n\n    @Override\n    public void encode(ByteBuf byte2) {\n        byte2.writeByte(protocolVersion().byteValue());\n        byte2.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "18ca5d725bdefa21ee8f304f72893c494244f89cc656a40fd2c71fb7856e981d", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "shorten-identifiers", "level": 2, "line_count": 33, "local_path": "identifiers/shorten-identifiers/I02__netty__SocksInitResponse__bc3b3e90.java", "order": 2, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 3, "identifiers_declared": 2, "local_name_collisions_avoided": 1, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-ccdcbc3b3e90-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 955, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-320baddaeb0c-I03", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme localBatch) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(localBatch, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */\n    public SocksAuthScheme fetchIndex() {\n        return authScheme;\n    }\n\n    @Override\n    public void validateMessage(ByteBuf channel) {\n        channel.writeByte(protocolVersion().byteValue());\n        channel.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "bddc5a3f67ee385f6056162e5846431652bbb53ce53faaa51bdb9b91aa735eec", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "mislead-identifiers", "level": 3, "line_count": 33, "local_path": "identifiers/mislead-identifiers/I03__netty__SocksInitResponse__addaeb0c.java", "order": 3, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 3, "identifiers_declared": 2, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 2, "local_random_pool_selections": 2, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 2, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-320baddaeb0c-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 956, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-79ee7e603a75-I04", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme a) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(a, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */\n    public SocksAuthScheme a() {\n        return authScheme;\n    }\n\n    @Override\n    public void b(ByteBuf b) {\n        b.writeByte(protocolVersion().byteValue());\n        b.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "9d48e114cf5dc2c615f5c971253ee8ae24e10e181a145d110931b226bc5bb6a5", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "garble-identifiers", "level": 4, "line_count": 33, "local_path": "identifiers/garble-identifiers/I04__netty__SocksInitResponse__7e603a75.java", "order": 4, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 3, "identifiers_declared": 2, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-79ee7e603a75-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 957, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-00034c85b89f-I05", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme authScheme) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(authScheme, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */\n    public SocksAuthScheme authScheme() {\n        return authScheme;\n    }\n\n    @Override\n    public void encodeAsByteBuf(ByteBuf byteBuf) {\n        byteBuf.writeByte(protocolVersion().byteValue());\n        byteBuf.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "encode-integer-literals", "level": 5, "line_count": 33, "local_path": "expressions/encode-integer-literals/I05__netty__SocksInitResponse__4c85b89f.java", "order": 5, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-00034c85b89f-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 958, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-88648bc48b0d-I06", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme authScheme) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(authScheme, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */\n    public SocksAuthScheme authScheme() {\n        return authScheme;\n    }\n\n    @Override\n    public void encodeAsByteBuf(ByteBuf byteBuf) {\n        byteBuf.writeByte(protocolVersion().byteValue());\n        byteBuf.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "invert-conditions", "level": 6, "line_count": 33, "local_path": "expressions/invert-conditions/I06__netty__SocksInitResponse__8bc48b0d.java", "order": 6, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-88648bc48b0d-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 959, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9d57f3606aeb-I07", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme authScheme) {\n        super(SocksResponseType.INIT);\nif (((0xC321 ^ 0xC321) != 0)) { throw new AssertionError(); }\n\n        this.authScheme = ObjectUtil.checkNotNull(authScheme, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */\n    public SocksAuthScheme authScheme() {\nif (((0x3C23 ^ 0x3C23) != 0)) { throw new AssertionError(); }\n\n        return authScheme;\n    }\n\n    @Override\n    public void encodeAsByteBuf(ByteBuf byteBuf) {\nif (((0x75BE ^ 0x75BE) != 0)) { throw new AssertionError(); }\n\n        byteBuf.writeByte(protocolVersion().byteValue());\n        byteBuf.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "7b4f92610d29afc7e2047e146654b90105f3f2231c0040cf54d736c0d671b755", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "insert-dead-branches", "level": 7, "line_count": 39, "local_path": "code-injection/insert-dead-branches/I07__netty__SocksInitResponse__f3606aeb.java", "order": 7, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 3}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-9d57f3606aeb-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 960, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9d811c40c217-I08", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme authScheme) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(authScheme, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */\n    public SocksAuthScheme authScheme() {\n{\n  int firstScore = 72;\n  int secondScore = 85;\n  int higherScore;\n  if (firstScore > secondScore) {\n    higherScore = firstScore;\n  } else {\n    higherScore = secondScore;\n  }\n}\n\n        return authScheme;\n    }\n\n    @Override\n    public void encodeAsByteBuf(ByteBuf byteBuf) {\n        byteBuf.writeByte(protocolVersion().byteValue());\n        byteBuf.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5da0bdd337f6eaa487fee1c1bb8ee035f6776ff767667a258ed755bfc89b0378", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 44, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__SocksInitResponse__1c40c217.java", "order": 8, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 10, "readable_template_index": 3}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-9d811c40c217-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 961, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-94e0f0ccfc12-I09", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme authScheme) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(authScheme, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */\n    public SocksAuthScheme authScheme() {\n        return authScheme;\n    }\n\n    @Override\n    public void encodeAsByteBuf(ByteBuf byteBuf) {\n{int lI0O_12ae2648=0x4956;lI0O_12ae2648=((lI0O_12ae2648&0)==0)?(((lI0O_12ae2648^lI0O_12ae2648)==0)?0:1):2;}\n\n        byteBuf.writeByte(protocolVersion().byteValue());\n        byteBuf.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "9f78186ab12715f717f20408a05cae3a6be95b2bd339fd89321275856a251d1c", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 35, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__SocksInitResponse__f0ccfc12.java", "order": 9, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 8}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-94e0f0ccfc12-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 962, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-46d02d43e77f-I10", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme; public SocksInitResponse(SocksAuthScheme authScheme) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(authScheme, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */ public SocksAuthScheme authScheme() { return authScheme; }\n\n    @Override public void encodeAsByteBuf(ByteBuf byteBuf) { byteBuf.writeByte(protocolVersion().byteValue());\n        byteBuf.writeByte(authScheme.byteValue()); }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "f98ed8e110cffdfd10a514038b762f7d069073edf854644e869528cd62b08c22", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "partially-compact-layout", "level": 10, "line_count": 25, "local_path": "layout/partially-compact-layout/I10__netty__SocksInitResponse__2d43e77f.java", "order": 10, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 19, "line_break_groups_removed": 7, "line_breaks_removed": 8, "whitespace_characters_removed": 37}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-46d02d43e77f-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 963, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e7f14af832d7-I11", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme authScheme) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(authScheme, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */\n    public SocksAuthScheme authScheme() {\n        return authScheme;\n    }\n\n    @Override\n    public void encodeAsByteBuf(ByteBuf byteBuf) {\n        byteBuf.writeByte(protocolVersion().byteValue());\n        byteBuf.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 33, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__SocksInitResponse__4af832d7.java", "order": 11, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-e7f14af832d7-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 964, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-04a4c1431d48-I12", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme authScheme) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(authScheme, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */\n    public SocksAuthScheme authScheme() {\n        return authScheme;\n    }\n\n    @Override\n    public void encodeAsByteBuf(ByteBuf byteBuf) {\n        byteBuf.writeByte(protocolVersion().byteValue());\n        byteBuf.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 33, "local_path": "data-flow/inline-intermediate-variables/I12__netty__SocksInitResponse__c1431d48.java", "order": 12, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-04a4c1431d48-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 965, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ea33bc1b3ba5-I13", "source": "package io.netty.handler.codec.socks;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * An socks init response.\n *\n * @see SocksInitRequest\n * @see SocksInitResponseDecoder\n */\npublic final class SocksInitResponse extends SocksResponse {\n    private final SocksAuthScheme authScheme;\n\n    public SocksInitResponse(SocksAuthScheme authScheme) {\n        super(SocksResponseType.INIT);\n        this.authScheme = ObjectUtil.checkNotNull(authScheme, \"authScheme\");\n    }\n\n    /**\n     * Returns the {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     *\n     * @return The {@link SocksAuthScheme} of this {@link SocksInitResponse}\n     */\n    public SocksAuthScheme authScheme() {\n        return authScheme;\n    }\n\n    @Override\n    public void encodeAsByteBuf(ByteBuf byteBuf) {\n        byteBuf.writeByte(protocolVersion().byteValue());\n        byteBuf.writeByte(authScheme.byteValue());\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__SocksInitResponse__7aa7fcf0.java", "base_sample_id": "source-974b032783704b24", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java", "interference": "lower-for-to-while", "level": 13, "line_count": 33, "local_path": "control-flow/lower-for-to-while/I13__netty__SocksInitResponse__bc1b3ba5.java", "order": 13, "original_content_sha256": "37d42872074a49e91a5d83609ff0e0fbd29bd13127f06555900c093c6751b501", "parent_variant_id": "int-983b7aa7fcf0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socks/SocksInitResponse.java#L21-L49", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "SocksInitResponse", "variant_id": "int-ea33bc1b3ba5-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 966, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-29738b504777-SRC", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus status, Socks5AddressType bndAddrType) {\n        this(status, bndAddrType, null, 0);\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus status, Socks5AddressType bndAddrType, String bndAddr, int bndPort) {\n\n        ObjectUtil.checkNotNull(status, \"status\");\n        ObjectUtil.checkNotNull(bndAddrType, \"bndAddrType\");\n\n        if (bndAddr != null) {\n            if (bndAddrType == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.DOMAIN) {\n                bndAddr = IDN.toASCII(bndAddr);\n                if (bndAddr.length() > 255) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: less than 256 chars)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        if (bndPort < 0 || bndPort > 65535) {\n            throw new IllegalArgumentException(\"bndPort: \" + bndPort + \" (expected: 0~65535)\");\n        }\n        this.status = status;\n        this.bndAddrType = bndAddrType;\n        this.bndAddr = bndAddr;\n        this.bndPort = bndPort;\n    }\n\n    @Override\n    public Socks5CommandStatus status() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType bndAddrType() {\n        return bndAddrType;\n    }\n\n    @Override\n    public String bndAddr() {\n        return bndAddr;\n    }\n\n    @Override\n    public int bndPort() {\n        return bndPort;\n    }\n\n    @Override\n    public String toString() {\n        StringBuilder buf = new StringBuilder(128);\n        buf.append(StringUtil.simpleClassName(this));\n\n        DecoderResult decoderResult = decoderResult();\n        if (!decoderResult.isSuccess()) {\n            buf.append(\"(decoderResult: \");\n            buf.append(decoderResult);\n            buf.append(\", status: \");\n        } else {\n            buf.append(\"(status: \");\n        }\n        buf.append(status());\n        buf.append(\", bndAddrType: \");\n        buf.append(bndAddrType());\n        buf.append(\", bndAddr: \");\n        buf.append(bndAddr());\n        buf.append(\", bndPort: \");\n        buf.append(bndPort());\n        buf.append(')');\n\n        return buf.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": null, "level": 0, "line_count": 98, "local_path": "source-original/SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "order": 0, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-29738b504777-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 715, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2015b05c08c4-I01", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n\n\n\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus status, Socks5AddressType bndAddrType) {\n        this(status, bndAddrType, null, 0);\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus status, Socks5AddressType bndAddrType, String bndAddr, int bndPort) {\n\n        ObjectUtil.checkNotNull(status, \"status\");\n        ObjectUtil.checkNotNull(bndAddrType, \"bndAddrType\");\n\n        if (bndAddr != null) {\n            if (bndAddrType == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.DOMAIN) {\n                bndAddr = IDN.toASCII(bndAddr);\n                if (bndAddr.length() > 255) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: less than 256 chars)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        if (bndPort < 0 || bndPort > 65535) {\n            throw new IllegalArgumentException(\"bndPort: \" + bndPort + \" (expected: 0~65535)\");\n        }\n        this.status = status;\n        this.bndAddrType = bndAddrType;\n        this.bndAddr = bndAddr;\n        this.bndPort = bndPort;\n    }\n\n    @Override\n    public Socks5CommandStatus status() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType bndAddrType() {\n        return bndAddrType;\n    }\n\n    @Override\n    public String bndAddr() {\n        return bndAddr;\n    }\n\n    @Override\n    public int bndPort() {\n        return bndPort;\n    }\n\n    @Override\n    public String toString() {\n        StringBuilder buf = new StringBuilder(128);\n        buf.append(StringUtil.simpleClassName(this));\n\n        DecoderResult decoderResult = decoderResult();\n        if (!decoderResult.isSuccess()) {\n            buf.append(\"(decoderResult: \");\n            buf.append(decoderResult);\n            buf.append(\", status: \");\n        } else {\n            buf.append(\"(status: \");\n        }\n        buf.append(status());\n        buf.append(\", bndAddrType: \");\n        buf.append(bndAddrType());\n        buf.append(\", bndAddr: \");\n        buf.append(bndAddr());\n        buf.append(\", bndPort: \");\n        buf.append(bndPort());\n        buf.append(')');\n\n        return buf.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "09fce229e7d7013948d3708ec2433c73f3dd9e57fd4ba854d904684c839a42b1", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "remove-comments", "level": 1, "line_count": 98, "local_path": "comments/remove-comments/I01__netty__DefaultSocks5CommandResponse__b05c08c4.java", "order": 1, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 51, "comments_removed": 1}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-2015b05c08c4-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 716, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d12a616c696f-I02", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus sta, Socks5AddressType bnd) {\n        this(sta, bnd, null, 0);\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus sta2, Socks5AddressType bnd2, String bnd3, int bnd4) {\n\n        ObjectUtil.checkNotNull(sta2, \"status\");\n        ObjectUtil.checkNotNull(bnd2, \"bndAddrType\");\n\n        if (bnd3 != null) {\n            if (bnd2 == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(bnd3)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bnd3 + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (bnd2 == Socks5AddressType.DOMAIN) {\n                bnd3 = IDN.toASCII(bnd3);\n                if (bnd3.length() > 255) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bnd3 + \" (expected: less than 256 chars)\");\n                }\n            } else if (bnd2 == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(bnd3)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bnd3 + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        if (bnd4 < 0 || bnd4 > 65535) {\n            throw new IllegalArgumentException(\"bndPort: \" + bnd4 + \" (expected: 0~65535)\");\n        }\n        this.status = sta2;\n        this.bndAddrType = bnd2;\n        this.bndAddr = bnd3;\n        this.bndPort = bnd4;\n    }\n\n    @Override\n    public Socks5CommandStatus sta() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType bnd() {\n        return bndAddrType;\n    }\n\n    @Override\n    public String bnd2() {\n        return bndAddr;\n    }\n\n    @Override\n    public int bnd3() {\n        return bndPort;\n    }\n\n    @Override\n    public String to() {\n        StringBuilder buf = new StringBuilder(128);\n        buf.append(StringUtil.simpleClassName(this));\n\n        DecoderResult decoder = decoderResult();\n        if (!decoder.isSuccess()) {\n            buf.append(\"(decoderResult: \");\n            buf.append(decoder);\n            buf.append(\", status: \");\n        } else {\n            buf.append(\"(status: \");\n        }\n        buf.append(sta());\n        buf.append(\", bndAddrType: \");\n        buf.append(bnd());\n        buf.append(\", bndAddr: \");\n        buf.append(bnd2());\n        buf.append(\", bndPort: \");\n        buf.append(bnd3());\n        buf.append(')');\n\n        return buf.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "05c51165372d2942e03962ec1adbd29fc2623fdca6ae81b95a308787341bf5e4", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "shorten-identifiers", "level": 2, "line_count": 98, "local_path": "identifiers/shorten-identifiers/I02__netty__DefaultSocks5CommandResponse__616c696f.java", "order": 2, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 39, "identifiers_declared": 8, "local_name_collisions_avoided": 4, "method_calls_renamed": 4, "method_declarations_renamed": 5, "method_name_collisions_avoided": 2, "method_name_groups": 5}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-d12a616c696f-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 717, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-13bf2e5cd267-I03", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus window, Socks5AddressType remoteScore) {\n        this(window, remoteScore, null, 0);\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus client, Socks5AddressType localWindow, String message, int feature) {\n\n        ObjectUtil.checkNotNull(client, \"status\");\n        ObjectUtil.checkNotNull(localWindow, \"bndAddrType\");\n\n        if (message != null) {\n            if (localWindow == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(message)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + message + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (localWindow == Socks5AddressType.DOMAIN) {\n                message = IDN.toASCII(message);\n                if (message.length() > 255) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + message + \" (expected: less than 256 chars)\");\n                }\n            } else if (localWindow == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(message)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + message + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        if (feature < 0 || feature > 65535) {\n            throw new IllegalArgumentException(\"bndPort: \" + feature + \" (expected: 0~65535)\");\n        }\n        this.status = client;\n        this.bndAddrType = localWindow;\n        this.bndAddr = message;\n        this.bndPort = feature;\n    }\n\n    @Override\n    public Socks5CommandStatus attach() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType saveAccount() {\n        return bndAddrType;\n    }\n\n    @Override\n    public String measure() {\n        return bndAddr;\n    }\n\n    @Override\n    public int refresh() {\n        return bndPort;\n    }\n\n    @Override\n    public String loadItem() {\n        StringBuilder map = new StringBuilder(128);\n        map.append(StringUtil.simpleClassName(this));\n\n        DecoderResult primaryConfig = decoderResult();\n        if (!primaryConfig.isSuccess()) {\n            map.append(\"(decoderResult: \");\n            map.append(primaryConfig);\n            map.append(\", status: \");\n        } else {\n            map.append(\"(status: \");\n        }\n        map.append(attach());\n        map.append(\", bndAddrType: \");\n        map.append(saveAccount());\n        map.append(\", bndAddr: \");\n        map.append(measure());\n        map.append(\", bndPort: \");\n        map.append(refresh());\n        map.append(')');\n\n        return map.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "57eb22a6ca82edcbf4389e912a1b99a2e2bbcd968061dfe22a069d5c05f22365", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "mislead-identifiers", "level": 3, "line_count": 98, "local_path": "identifiers/mislead-identifiers/I03__netty__DefaultSocks5CommandResponse__2e5cd267.java", "order": 3, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 39, "identifiers_declared": 8, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 8, "local_random_pool_selections": 8, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 4, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 5, "method_exact_length_matches": 5, "method_name_groups": 5, "method_random_pool_selections": 5, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-13bf2e5cd267-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 718, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c921dd53bf49-I04", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus a, Socks5AddressType b) {\n        this(a, b, null, 0);\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus c, Socks5AddressType d, String e, int f) {\n\n        ObjectUtil.checkNotNull(c, \"status\");\n        ObjectUtil.checkNotNull(d, \"bndAddrType\");\n\n        if (e != null) {\n            if (d == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(e)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + e + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (d == Socks5AddressType.DOMAIN) {\n                e = IDN.toASCII(e);\n                if (e.length() > 255) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + e + \" (expected: less than 256 chars)\");\n                }\n            } else if (d == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(e)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + e + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        if (f < 0 || f > 65535) {\n            throw new IllegalArgumentException(\"bndPort: \" + f + \" (expected: 0~65535)\");\n        }\n        this.status = c;\n        this.bndAddrType = d;\n        this.bndAddr = e;\n        this.bndPort = f;\n    }\n\n    @Override\n    public Socks5CommandStatus a() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType b() {\n        return bndAddrType;\n    }\n\n    @Override\n    public String c() {\n        return bndAddr;\n    }\n\n    @Override\n    public int d() {\n        return bndPort;\n    }\n\n    @Override\n    public String e() {\n        StringBuilder g = new StringBuilder(128);\n        g.append(StringUtil.simpleClassName(this));\n\n        DecoderResult h = decoderResult();\n        if (!h.isSuccess()) {\n            g.append(\"(decoderResult: \");\n            g.append(h);\n            g.append(\", status: \");\n        } else {\n            g.append(\"(status: \");\n        }\n        g.append(a());\n        g.append(\", bndAddrType: \");\n        g.append(b());\n        g.append(\", bndAddr: \");\n        g.append(c());\n        g.append(\", bndPort: \");\n        g.append(d());\n        g.append(')');\n\n        return g.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "68abde69f91873b8e156e708c5a712e654fd94bc9bae7df892af239210e1e3c1", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "garble-identifiers", "level": 4, "line_count": 98, "local_path": "identifiers/garble-identifiers/I04__netty__DefaultSocks5CommandResponse__dd53bf49.java", "order": 4, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 39, "identifiers_declared": 8, "local_name_collisions_avoided": 0, "method_calls_renamed": 4, "method_declarations_renamed": 5, "method_name_collisions_avoided": 0, "method_name_groups": 5}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-c921dd53bf49-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 719, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ba69223fdeaa-I05", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus status, Socks5AddressType bndAddrType) {\n        this(status, bndAddrType, null, 0x0);\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus status, Socks5AddressType bndAddrType, String bndAddr, int bndPort) {\n\n        ObjectUtil.checkNotNull(status, \"status\");\n        ObjectUtil.checkNotNull(bndAddrType, \"bndAddrType\");\n\n        if (bndAddr != null) {\n            if (bndAddrType == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.DOMAIN) {\n                bndAddr = IDN.toASCII(bndAddr);\n                if (bndAddr.length() > 0xff) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: less than 256 chars)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        if (bndPort < 0x0 || bndPort > 0xffff) {\n            throw new IllegalArgumentException(\"bndPort: \" + bndPort + \" (expected: 0~65535)\");\n        }\n        this.status = status;\n        this.bndAddrType = bndAddrType;\n        this.bndAddr = bndAddr;\n        this.bndPort = bndPort;\n    }\n\n    @Override\n    public Socks5CommandStatus status() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType bndAddrType() {\n        return bndAddrType;\n    }\n\n    @Override\n    public String bndAddr() {\n        return bndAddr;\n    }\n\n    @Override\n    public int bndPort() {\n        return bndPort;\n    }\n\n    @Override\n    public String toString() {\n        StringBuilder buf = new StringBuilder(0x80);\n        buf.append(StringUtil.simpleClassName(this));\n\n        DecoderResult decoderResult = decoderResult();\n        if (!decoderResult.isSuccess()) {\n            buf.append(\"(decoderResult: \");\n            buf.append(decoderResult);\n            buf.append(\", status: \");\n        } else {\n            buf.append(\"(status: \");\n        }\n        buf.append(status());\n        buf.append(\", bndAddrType: \");\n        buf.append(bndAddrType());\n        buf.append(\", bndAddr: \");\n        buf.append(bndAddr());\n        buf.append(\", bndPort: \");\n        buf.append(bndPort());\n        buf.append(')');\n\n        return buf.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "7d50631d61ae40aefb368a796e9c1d33a6ff7481fae65bdfd76ba3cc9cf0f7c2", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "encode-integer-literals", "level": 5, "line_count": 98, "local_path": "expressions/encode-integer-literals/I05__netty__DefaultSocks5CommandResponse__223fdeaa.java", "order": 5, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 5}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-ba69223fdeaa-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 720, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6a503d9e1759-I06", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus status, Socks5AddressType bndAddrType) {\n        this(status, bndAddrType, null, 0);\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus status, Socks5AddressType bndAddrType, String bndAddr, int bndPort) {\n\n        ObjectUtil.checkNotNull(status, \"status\");\n        ObjectUtil.checkNotNull(bndAddrType, \"bndAddrType\");\n\n        if (!((bndAddr != null))) {} else {\n            if (bndAddrType == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.DOMAIN) {\n                bndAddr = IDN.toASCII(bndAddr);\n                if (bndAddr.length() > 255) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: less than 256 chars)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        if (!((bndPort < 0 || bndPort > 65535))) {} else {\n            throw new IllegalArgumentException(\"bndPort: \" + bndPort + \" (expected: 0~65535)\");\n        }\n        this.status = status;\n        this.bndAddrType = bndAddrType;\n        this.bndAddr = bndAddr;\n        this.bndPort = bndPort;\n    }\n\n    @Override\n    public Socks5CommandStatus status() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType bndAddrType() {\n        return bndAddrType;\n    }\n\n    @Override\n    public String bndAddr() {\n        return bndAddr;\n    }\n\n    @Override\n    public int bndPort() {\n        return bndPort;\n    }\n\n    @Override\n    public String toString() {\n        StringBuilder buf = new StringBuilder(128);\n        buf.append(StringUtil.simpleClassName(this));\n\n        DecoderResult decoderResult = decoderResult();\n        if (!((!decoderResult.isSuccess()))) {\n            buf.append(\"(status: \");\n        } else {\n            buf.append(\"(decoderResult: \");\n            buf.append(decoderResult);\n            buf.append(\", status: \");\n        }\n        buf.append(status());\n        buf.append(\", bndAddrType: \");\n        buf.append(bndAddrType());\n        buf.append(\", bndAddr: \");\n        buf.append(bndAddr());\n        buf.append(\", bndPort: \");\n        buf.append(bndPort());\n        buf.append(')');\n\n        return buf.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "e5c42612db0072bb9a908c0c36d5c05ed6a69587143f1b516947faa2957b88bf", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "invert-conditions", "level": 6, "line_count": 98, "local_path": "expressions/invert-conditions/I06__netty__DefaultSocks5CommandResponse__3d9e1759.java", "order": 6, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 3}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-6a503d9e1759-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 721, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eac468de711c-I07", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus status, Socks5AddressType bndAddrType) {\n        this(status, bndAddrType, null, 0);\nif (((0x8045 ^ 0x8045) != 0)) { throw new AssertionError(); }\n\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus status, Socks5AddressType bndAddrType, String bndAddr, int bndPort) {\nif (((0x998D ^ 0x998D) != 0)) { throw new AssertionError(); }\n\n\n        ObjectUtil.checkNotNull(status, \"status\");\n        ObjectUtil.checkNotNull(bndAddrType, \"bndAddrType\");\n\n        if (bndAddr != null) {\n            if (bndAddrType == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.DOMAIN) {\n                bndAddr = IDN.toASCII(bndAddr);\n                if (bndAddr.length() > 255) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: less than 256 chars)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        if (bndPort < 0 || bndPort > 65535) {\n            throw new IllegalArgumentException(\"bndPort: \" + bndPort + \" (expected: 0~65535)\");\n        }\n        this.status = status;\n        this.bndAddrType = bndAddrType;\n        this.bndAddr = bndAddr;\n        this.bndPort = bndPort;\n    }\n\n    @Override\n    public Socks5CommandStatus status() {\nif (((0x7D77 ^ 0x7D77) != 0)) { throw new AssertionError(); }\n\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType bndAddrType() {\nif (((0xC8A4 ^ 0xC8A4) != 0)) { throw new AssertionError(); }\n\n        return bndAddrType;\n    }\n\n    @Override\n    public String bndAddr() {\nif (((0xC69D ^ 0xC69D) != 0)) { throw new AssertionError(); }\n\n        return bndAddr;\n    }\n\n    @Override\n    public int bndPort() {\nif (((0x9C35 ^ 0x9C35) != 0)) { throw new AssertionError(); }\n\n        return bndPort;\n    }\n\n    @Override\n    public String toString() {\nif (((0xAE46 ^ 0xAE46) != 0)) { throw new AssertionError(); }\n\n        StringBuilder buf = new StringBuilder(128);\n        buf.append(StringUtil.simpleClassName(this));\n\n        DecoderResult decoderResult = decoderResult();\n        if (!decoderResult.isSuccess()) {\n            buf.append(\"(decoderResult: \");\n            buf.append(decoderResult);\n            buf.append(\", status: \");\n        } else {\n            buf.append(\"(status: \");\n        }\n        buf.append(status());\n        buf.append(\", bndAddrType: \");\n        buf.append(bndAddrType());\n        buf.append(\", bndAddr: \");\n        buf.append(bndAddr());\n        buf.append(\", bndPort: \");\n        buf.append(bndPort());\n        buf.append(')');\n\n        return buf.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "044efe6cba6396e5dc655ccc495ec5184ccd654f713e802eda104e342ceceae1", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "insert-dead-branches", "level": 7, "line_count": 112, "local_path": "code-injection/insert-dead-branches/I07__netty__DefaultSocks5CommandResponse__68de711c.java", "order": 7, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 7}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-eac468de711c-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 722, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3bb0a741c5f2-I08", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus status, Socks5AddressType bndAddrType) {\n        this(status, bndAddrType, null, 0);\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus status, Socks5AddressType bndAddrType, String bndAddr, int bndPort) {\n\n        ObjectUtil.checkNotNull(status, \"status\");\n        ObjectUtil.checkNotNull(bndAddrType, \"bndAddrType\");\n\n        if (bndAddr != null) {\n            if (bndAddrType == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.DOMAIN) {\n                bndAddr = IDN.toASCII(bndAddr);\n                if (bndAddr.length() > 255) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: less than 256 chars)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        if (bndPort < 0 || bndPort > 65535) {\n            throw new IllegalArgumentException(\"bndPort: \" + bndPort + \" (expected: 0~65535)\");\n        }\n        this.status = status;\n        this.bndAddrType = bndAddrType;\n        this.bndAddr = bndAddr;\n        this.bndPort = bndPort;\n    }\n\n    @Override\n    public Socks5CommandStatus status() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType bndAddrType() {\n{\n  int firstScore = 72;\n  int secondScore = 85;\n  int higherScore;\n  if (firstScore > secondScore) {\n    higherScore = firstScore;\n  } else {\n    higherScore = secondScore;\n  }\n}\n\n        return bndAddrType;\n    }\n\n    @Override\n    public String bndAddr() {\n        return bndAddr;\n    }\n\n    @Override\n    public int bndPort() {\n        return bndPort;\n    }\n\n    @Override\n    public String toString() {\n        StringBuilder buf = new StringBuilder(128);\n        buf.append(StringUtil.simpleClassName(this));\n\n        DecoderResult decoderResult = decoderResult();\n        if (!decoderResult.isSuccess()) {\n            buf.append(\"(decoderResult: \");\n            buf.append(decoderResult);\n            buf.append(\", status: \");\n        } else {\n            buf.append(\"(status: \");\n        }\n        buf.append(status());\n        buf.append(\", bndAddrType: \");\n        buf.append(bndAddrType());\n        buf.append(\", bndAddr: \");\n        buf.append(bndAddr());\n        buf.append(\", bndPort: \");\n        buf.append(bndPort());\n        buf.append(')');\n\n        return buf.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "1603699570314f1625e8e7f67962619d17efee2259f2b331d1f52bc89999c1fa", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 109, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__DefaultSocks5CommandResponse__a741c5f2.java", "order": 8, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 10, "readable_template_index": 3}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-3bb0a741c5f2-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 723, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dc545587e542-I09", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus status, Socks5AddressType bndAddrType) {\n        this(status, bndAddrType, null, 0);\n{int lI0O_8d8a3d5c=0x999C-0x999C;lI0O_8d8a3d5c=(lI0O_8d8a3d5c==0)?(lI0O_8d8a3d5c|0):(lI0O_8d8a3d5c&0);}\n\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus status, Socks5AddressType bndAddrType, String bndAddr, int bndPort) {\n\n        ObjectUtil.checkNotNull(status, \"status\");\n        ObjectUtil.checkNotNull(bndAddrType, \"bndAddrType\");\n\n        if (bndAddr != null) {\n            if (bndAddrType == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.DOMAIN) {\n                bndAddr = IDN.toASCII(bndAddr);\n                if (bndAddr.length() > 255) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: less than 256 chars)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        if (bndPort < 0 || bndPort > 65535) {\n            throw new IllegalArgumentException(\"bndPort: \" + bndPort + \" (expected: 0~65535)\");\n        }\n        this.status = status;\n        this.bndAddrType = bndAddrType;\n        this.bndAddr = bndAddr;\n        this.bndPort = bndPort;\n    }\n\n    @Override\n    public Socks5CommandStatus status() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType bndAddrType() {\n        return bndAddrType;\n    }\n\n    @Override\n    public String bndAddr() {\n        return bndAddr;\n    }\n\n    @Override\n    public int bndPort() {\n        return bndPort;\n    }\n\n    @Override\n    public String toString() {\n        StringBuilder buf = new StringBuilder(128);\n        buf.append(StringUtil.simpleClassName(this));\n\n        DecoderResult decoderResult = decoderResult();\n        if (!decoderResult.isSuccess()) {\n            buf.append(\"(decoderResult: \");\n            buf.append(decoderResult);\n            buf.append(\", status: \");\n        } else {\n            buf.append(\"(status: \");\n        }\n        buf.append(status());\n        buf.append(\", bndAddrType: \");\n        buf.append(bndAddrType());\n        buf.append(\", bndAddr: \");\n        buf.append(bndAddr());\n        buf.append(\", bndPort: \");\n        buf.append(bndPort());\n        buf.append(')');\n\n        return buf.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "0a068822780fe046b8a0ecf66749eb4cd9f6ca60d39b868a79557e865db00553", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 100, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__DefaultSocks5CommandResponse__5587e542.java", "order": 9, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 1}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-dc545587e542-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 724, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7703703debcd-I10", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil; import io.netty.util.internal.ObjectUtil; import io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status; private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort; public DefaultSocks5CommandResponse(Socks5CommandStatus status, Socks5AddressType bndAddrType) { this(status, bndAddrType, null, 0); } public DefaultSocks5CommandResponse(\n            Socks5CommandStatus status, Socks5AddressType bndAddrType, String bndAddr, int bndPort) {\n\n        ObjectUtil.checkNotNull(status, \"status\");\n        ObjectUtil.checkNotNull(bndAddrType, \"bndAddrType\");\n\n        if (bndAddr != null) {\n            if (bndAddrType == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv4 address)\"); }\n            } else if (bndAddrType == Socks5AddressType.DOMAIN) {\n                bndAddr = IDN.toASCII(bndAddr); if (bndAddr.length() > 255) { throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: less than 256 chars)\"); }\n            } else if (bndAddrType == Socks5AddressType.IPv6) { if (!NetUtil.isValidIpV6Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv6 address)\"); } }\n        } if (bndPort < 0 || bndPort > 65535) {\n            throw new IllegalArgumentException(\"bndPort: \" + bndPort + \" (expected: 0~65535)\");\n        }\n        this.status = status;\n        this.bndAddrType = bndAddrType; this.bndAddr = bndAddr;\n        this.bndPort = bndPort;\n    }\n\n    @Override\n    public Socks5CommandStatus status() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType bndAddrType() {\n        return bndAddrType;\n    }\n\n    @Override\n    public String bndAddr() { return bndAddr;\n    }\n\n    @Override public int bndPort() { return bndPort;\n    }\n\n    @Override public String toString() { StringBuilder buf = new StringBuilder(128); buf.append(StringUtil.simpleClassName(this)); DecoderResult decoderResult = decoderResult();\n        if (!decoderResult.isSuccess()) { buf.append(\"(decoderResult: \");\n            buf.append(decoderResult); buf.append(\", status: \"); } else {\n            buf.append(\"(status: \"); } buf.append(status()); buf.append(\", bndAddrType: \");\n        buf.append(bndAddrType());\n        buf.append(\", bndAddr: \");\n        buf.append(bndAddr());\n        buf.append(\", bndPort: \"); buf.append(bndPort()); buf.append(')');\n\n        return buf.toString(); }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "eb632af70438773975251101db148421541df40bb366c89d440a803f61f88387", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "partially-compact-layout", "level": 10, "line_count": 62, "local_path": "layout/partially-compact-layout/I10__netty__DefaultSocks5CommandResponse__703debcd.java", "order": 10, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 81, "line_break_groups_removed": 32, "line_breaks_removed": 36, "whitespace_characters_removed": 280}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-7703703debcd-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 725, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-86a7b35867cd-I11", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus status, Socks5AddressType bndAddrType) {\n        this(status, bndAddrType, null, 0);\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus status, Socks5AddressType bndAddrType, String bndAddr, int bndPort) {\n\n        ObjectUtil.checkNotNull(status, \"status\");\n        ObjectUtil.checkNotNull(bndAddrType, \"bndAddrType\");\n\n        if (bndAddr != null) {\n            if (bndAddrType == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.DOMAIN) {\n                bndAddr = IDN.toASCII(bndAddr);\n                final int a = 127;\n                final int b = 128;\n                if (bndAddr.length() > (a + b)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: less than 256 chars)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        final int c = 1;\n        final int d = -1;\n        final int e = 32767;\n        final int f = 32768;\n        if (bndPort < (c + d) || bndPort > (e + f)) {\n            throw new IllegalArgumentException(\"bndPort: \" + bndPort + \" (expected: 0~65535)\");\n        }\n        this.status = status;\n        this.bndAddrType = bndAddrType;\n        this.bndAddr = bndAddr;\n        this.bndPort = bndPort;\n    }\n\n    @Override\n    public Socks5CommandStatus status() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType bndAddrType() {\n        return bndAddrType;\n    }\n\n    @Override\n    public String bndAddr() {\n        return bndAddr;\n    }\n\n    @Override\n    public int bndPort() {\n        return bndPort;\n    }\n\n    @Override\n    public String toString() {\n        final int g = 64;\n        final int h = 64;\n        StringBuilder buf = new StringBuilder((g + h));\n        buf.append(StringUtil.simpleClassName(this));\n\n        DecoderResult decoderResult = decoderResult();\n        if (!decoderResult.isSuccess()) {\n            buf.append(\"(decoderResult: \");\n            buf.append(decoderResult);\n            buf.append(\", status: \");\n        } else {\n            buf.append(\"(status: \");\n        }\n        buf.append(status());\n        buf.append(\", bndAddrType: \");\n        buf.append(bndAddrType());\n        buf.append(\", bndAddr: \");\n        buf.append(bndAddr());\n        buf.append(\", bndPort: \");\n        buf.append(bndPort());\n        buf.append(')');\n\n        return buf.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "f6e38eae6e3daa034f40d77819fdcd06dae81431fc1edb6bc0d59397e81aa9ca", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 106, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__DefaultSocks5CommandResponse__b35867cd.java", "order": 11, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 4, "intermediate_variables_introduced": 8, "statements_augmented": 3}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-86a7b35867cd-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 726, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-131d3e712eca-I12", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus status, Socks5AddressType bndAddrType) {\n        this(status, bndAddrType, null, 0);\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus status, Socks5AddressType bndAddrType, String bndAddr, int bndPort) {\n\n        ObjectUtil.checkNotNull(status, \"status\");\n        ObjectUtil.checkNotNull(bndAddrType, \"bndAddrType\");\n\n        if (bndAddr != null) {\n            if (bndAddrType == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.DOMAIN) {\n                bndAddr = IDN.toASCII(bndAddr);\n                if (bndAddr.length() > 255) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: less than 256 chars)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        if (bndPort < 0 || bndPort > 65535) {\n            throw new IllegalArgumentException(\"bndPort: \" + bndPort + \" (expected: 0~65535)\");\n        }\n        this.status = status;\n        this.bndAddrType = bndAddrType;\n        this.bndAddr = bndAddr;\n        this.bndPort = bndPort;\n    }\n\n    @Override\n    public Socks5CommandStatus status() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType bndAddrType() {\n        return bndAddrType;\n    }\n\n    @Override\n    public String bndAddr() {\n        return bndAddr;\n    }\n\n    @Override\n    public int bndPort() {\n        return bndPort;\n    }\n\n    @Override\n    public String toString() {\n        StringBuilder buf = new StringBuilder(128);\n        buf.append(StringUtil.simpleClassName(this));\n\n        DecoderResult decoderResult = decoderResult();\n        if (!decoderResult.isSuccess()) {\n            buf.append(\"(decoderResult: \");\n            buf.append(decoderResult);\n            buf.append(\", status: \");\n        } else {\n            buf.append(\"(status: \");\n        }\n        buf.append(status());\n        buf.append(\", bndAddrType: \");\n        buf.append(bndAddrType());\n        buf.append(\", bndAddr: \");\n        buf.append(bndAddr());\n        buf.append(\", bndPort: \");\n        buf.append(bndPort());\n        buf.append(')');\n\n        return buf.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 98, "local_path": "data-flow/inline-intermediate-variables/I12__netty__DefaultSocks5CommandResponse__3e712eca.java", "order": 12, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-131d3e712eca-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 727, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-258a9c8fed23-I13", "source": "package io.netty.handler.codec.socksx.v5;\nimport io.netty.handler.codec.DecoderResult;\nimport io.netty.util.NetUtil;\nimport io.netty.util.internal.ObjectUtil;\nimport io.netty.util.internal.StringUtil;\nimport java.net.IDN;\n\n/**\n * The default {@link Socks5CommandResponse}.\n */\npublic final class DefaultSocks5CommandResponse extends AbstractSocks5Message implements Socks5CommandResponse {\n\n    private final Socks5CommandStatus status;\n    private final Socks5AddressType bndAddrType;\n    private final String bndAddr;\n    private final int bndPort;\n\n    public DefaultSocks5CommandResponse(Socks5CommandStatus status, Socks5AddressType bndAddrType) {\n        this(status, bndAddrType, null, 0);\n    }\n\n    public DefaultSocks5CommandResponse(\n            Socks5CommandStatus status, Socks5AddressType bndAddrType, String bndAddr, int bndPort) {\n\n        ObjectUtil.checkNotNull(status, \"status\");\n        ObjectUtil.checkNotNull(bndAddrType, \"bndAddrType\");\n\n        if (bndAddr != null) {\n            if (bndAddrType == Socks5AddressType.IPv4) {\n                if (!NetUtil.isValidIpV4Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv4 address)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.DOMAIN) {\n                bndAddr = IDN.toASCII(bndAddr);\n                if (bndAddr.length() > 255) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: less than 256 chars)\");\n                }\n            } else if (bndAddrType == Socks5AddressType.IPv6) {\n                if (!NetUtil.isValidIpV6Address(bndAddr)) {\n                    throw new IllegalArgumentException(\"bndAddr: \" + bndAddr + \" (expected: a valid IPv6 address)\");\n                }\n            }\n        }\n\n        if (bndPort < 0 || bndPort > 65535) {\n            throw new IllegalArgumentException(\"bndPort: \" + bndPort + \" (expected: 0~65535)\");\n        }\n        this.status = status;\n        this.bndAddrType = bndAddrType;\n        this.bndAddr = bndAddr;\n        this.bndPort = bndPort;\n    }\n\n    @Override\n    public Socks5CommandStatus status() {\n        return status;\n    }\n\n    @Override\n    public Socks5AddressType bndAddrType() {\n        return bndAddrType;\n    }\n\n    @Override\n    public String bndAddr() {\n        return bndAddr;\n    }\n\n    @Override\n    public int bndPort() {\n        return bndPort;\n    }\n\n    @Override\n    public String toString() {\n        StringBuilder buf = new StringBuilder(128);\n        buf.append(StringUtil.simpleClassName(this));\n\n        DecoderResult decoderResult = decoderResult();\n        if (!decoderResult.isSuccess()) {\n            buf.append(\"(decoderResult: \");\n            buf.append(decoderResult);\n            buf.append(\", status: \");\n        } else {\n            buf.append(\"(status: \");\n        }\n        buf.append(status());\n        buf.append(\", bndAddrType: \");\n        buf.append(bndAddrType());\n        buf.append(\", bndAddr: \");\n        buf.append(bndAddr());\n        buf.append(\", bndPort: \");\n        buf.append(bndPort());\n        buf.append(')');\n\n        return buf.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__DefaultSocks5CommandResponse__8b504777.java", "base_sample_id": "source-1000412be6d7c901", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java", "interference": "lower-for-to-while", "level": 13, "line_count": 98, "local_path": "control-flow/lower-for-to-while/I13__netty__DefaultSocks5CommandResponse__9c8fed23.java", "order": 13, "original_content_sha256": "26380ff2d4a75f1f93206700fdd540b26410c36a270ab5227587cf4313472fe2", "parent_variant_id": "int-29738b504777-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/DefaultSocks5CommandResponse.java#L25-L115", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "DefaultSocks5CommandResponse", "variant_id": "int-258a9c8fed23-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 728, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-732d2e4181a0-SRC", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void operationComplete(final Future<?> future) {\n            if (executor.inEventLoop()) {\n                operationComplete0(future);\n            } else {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void run() {\n                        operationComplete0(future);\n                    }\n                });\n            }\n        }\n\n        private void operationComplete0(Future<?> future) {\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!future.isSuccess() && cause == null) {\n                cause = future.cause();\n            }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                tryPromise();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\n    }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor executor) {\n        this.executor = ObjectUtil.checkNotNull(executor, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void add(Promise promise) {\n        add((Future) promise);\n    }\n\n    /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add(Future future) {\n        checkAddAllowed();\n        checkInEventLoop();\n        ++expectedCount;\n        future.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void addAll(Promise... promises) {\n        addAll((Future[]) promises);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void addAll(Future... futures) {\n        for (Future future : futures) {\n            this.add(future);\n        }\n    }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void finish(Promise<Void> aggregatePromise) {\n        ObjectUtil.checkNotNull(aggregatePromise, \"aggregatePromise\");\n        checkInEventLoop();\n        if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = aggregatePromise;\n        if (doneCount == expectedCount) {\n            tryPromise();\n        }\n    }\n\n    private void checkInEventLoop() {\n        if (!executor.inEventLoop()) {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean tryPromise() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void checkAddAllowed() {\n        if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": null, "level": 0, "line_count": 162, "local_path": "source-original/SRC__netty__PromiseCombiner__2e4181a0.java", "order": 0, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-732d2e4181a0-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 855, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0ff1bb5a636d-I01", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void operationComplete(final Future<?> future) {\n            if (executor.inEventLoop()) {\n                operationComplete0(future);\n            } else {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void run() {\n                        operationComplete0(future);\n                    }\n                });\n            }\n        }\n\n        private void operationComplete0(Future<?> future) {\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!future.isSuccess() && cause == null) {\n                cause = future.cause();\n            }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                tryPromise();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    \n\n\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\n    }\n\n    \n\n\n\n\n\n    public PromiseCombiner(EventExecutor executor) {\n        this.executor = ObjectUtil.checkNotNull(executor, \"executor\");\n    }\n\n    \n\n\n\n\n\n\n\n    @Deprecated\n    public void add(Promise promise) {\n        add((Future) promise);\n    }\n\n    \n\n\n\n\n\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add(Future future) {\n        checkAddAllowed();\n        checkInEventLoop();\n        ++expectedCount;\n        future.addListener(listener);\n    }\n\n    \n\n\n\n\n\n\n\n    @Deprecated\n    public void addAll(Promise... promises) {\n        addAll((Future[]) promises);\n    }\n\n    \n\n\n\n\n\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void addAll(Future... futures) {\n        for (Future future : futures) {\n            this.add(future);\n        }\n    }\n\n    \n\n\n\n\n\n\n\n\n\n\n    public void finish(Promise<Void> aggregatePromise) {\n        ObjectUtil.checkNotNull(aggregatePromise, \"aggregatePromise\");\n        checkInEventLoop();\n        if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = aggregatePromise;\n        if (doneCount == expectedCount) {\n            tryPromise();\n        }\n    }\n\n    private void checkInEventLoop() {\n        if (!executor.inEventLoop()) {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean tryPromise() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void checkAddAllowed() {\n        if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "eca4448c1c49373bad8639dfd0d9fb6748b443d31f2f37903908201c337ca087", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "remove-comments", "level": 1, "line_count": 162, "local_path": "comments/remove-comments/I01__netty__PromiseCombiner__bb5a636d.java", "order": 1, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 3335, "comments_removed": 8}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-0ff1bb5a636d-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 856, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ffea6c6df720-I02", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void operation(final Future<?> fut) {\n            if (executor.inEventLoop()) {\n                operation2(fut);\n            } else {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void run() {\n                        operation2(fut);\n                    }\n                });\n            }\n        }\n\n        private void operation2(Future<?> fut2) {\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!fut2.isSuccess() && cause == null) {\n                cause = fut2.cause();\n            }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                try2();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\n    }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor exe) {\n        this.executor = ObjectUtil.checkNotNull(exe, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void add(Promise pro) {\n        add((Future) pro);\n    }\n\n    /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add(Future fut3) {\n        check2();\n        check();\n        ++expectedCount;\n        fut3.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void add2(Promise... pro2) {\n        add2((Future[]) pro2);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add2(Future... fut4) {\n        for (Future fut5 : fut4) {\n            this.add(fut5);\n        }\n    }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void fin(Promise<Void> aggregate) {\n        ObjectUtil.checkNotNull(aggregate, \"aggregatePromise\");\n        check();\n        if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = aggregate;\n        if (doneCount == expectedCount) {\n            try2();\n        }\n    }\n\n    private void check() {\n        if (!executor.inEventLoop()) {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean try2() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void check2() {\n        if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "39f4401125c23824f97aeef5d5563b5428136ecadea3d57dadb321a5a57b5b09", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "shorten-identifiers", "level": 2, "line_count": 162, "local_path": "identifiers/shorten-identifiers/I02__netty__PromiseCombiner__6c6df720.java", "order": 2, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 12, "identifiers_declared": 9, "local_name_collisions_avoided": 5, "method_calls_renamed": 8, "method_declarations_renamed": 8, "method_name_collisions_avoided": 4, "method_name_groups": 9}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-ffea6c6df720-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 857, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-48bfbc7ddaba-I03", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void validateSession(final Future<?> config) {\n            if (executor.inEventLoop()) {\n                validateRequest(config);\n            } else {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void copy() {\n                        validateRequest(config);\n                    }\n                });\n            }\n        }\n\n        private void validateRequest(Future<?> client) {\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!client.isSuccess() && cause == null) {\n                cause = client.cause();\n            }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                readClient();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\n    }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor document) {\n        this.executor = ObjectUtil.checkNotNull(document, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void emit(Promise invoice) {\n        emit((Future) invoice);\n    }\n\n    /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void emit(Future amount) {\n        validateBalance();\n        validateMessage();\n        ++expectedCount;\n        amount.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void expand(Promise... duration) {\n        expand((Future[]) duration);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void expand(Future... feature) {\n        for (Future status : feature) {\n            this.emit(status);\n        }\n    }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void select(Promise<Void> defaultBalance) {\n        ObjectUtil.checkNotNull(defaultBalance, \"aggregatePromise\");\n        validateMessage();\n        if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = defaultBalance;\n        if (doneCount == expectedCount) {\n            readClient();\n        }\n    }\n\n    private void validateMessage() {\n        if (!executor.inEventLoop()) {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean readClient() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void validateBalance() {\n        if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "bd313e335eba594a5912802e2814c2e07ee86a487d1cb9985df1824d5d040d4b", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "mislead-identifiers", "level": 3, "line_count": 162, "local_path": "identifiers/mislead-identifiers/I03__netty__PromiseCombiner__bc7ddaba.java", "order": 3, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 12, "identifiers_declared": 9, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 3, "local_exact_length_matches": 8, "local_random_pool_selections": 9, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 10, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 3, "method_declarations_renamed": 11, "method_exact_length_matches": 4, "method_name_groups": 9, "method_random_pool_selections": 9, "method_total_length_difference": 8}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-48bfbc7ddaba-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 858, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3ca58e177f20-I04", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void a(final Future<?> a) {\n            if (executor.inEventLoop()) {\n                c(a);\n            } else {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void b() {\n                        c(a);\n                    }\n                });\n            }\n        }\n\n        private void c(Future<?> b) {\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!b.isSuccess() && cause == null) {\n                cause = b.cause();\n            }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                h();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\n    }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor c) {\n        this.executor = ObjectUtil.checkNotNull(c, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void d(Promise d) {\n        d((Future) d);\n    }\n\n    /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void d(Future e) {\n        i();\n        g();\n        ++expectedCount;\n        e.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void e(Promise... f) {\n        e((Future[]) f);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void e(Future... g) {\n        for (Future h : g) {\n            this.d(h);\n        }\n    }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void f(Promise<Void> i) {\n        ObjectUtil.checkNotNull(i, \"aggregatePromise\");\n        g();\n        if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = i;\n        if (doneCount == expectedCount) {\n            h();\n        }\n    }\n\n    private void g() {\n        if (!executor.inEventLoop()) {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean h() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void i() {\n        if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "c8b0197edb761ad0285e0eac29e4b1b1ddad7a95909eddb7df442741498baea7", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "garble-identifiers", "level": 4, "line_count": 162, "local_path": "identifiers/garble-identifiers/I04__netty__PromiseCombiner__8e177f20.java", "order": 4, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 12, "identifiers_declared": 9, "local_name_collisions_avoided": 0, "method_calls_renamed": 10, "method_declarations_renamed": 11, "method_name_collisions_avoided": 0, "method_name_groups": 9}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-3ca58e177f20-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 859, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6faa2414d93b-I05", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void operationComplete(final Future<?> future) {\n            if (executor.inEventLoop()) {\n                operationComplete0(future);\n            } else {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void run() {\n                        operationComplete0(future);\n                    }\n                });\n            }\n        }\n\n        private void operationComplete0(Future<?> future) {\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!future.isSuccess() && cause == null) {\n                cause = future.cause();\n            }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                tryPromise();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\n    }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor executor) {\n        this.executor = ObjectUtil.checkNotNull(executor, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void add(Promise promise) {\n        add((Future) promise);\n    }\n\n    /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add(Future future) {\n        checkAddAllowed();\n        checkInEventLoop();\n        ++expectedCount;\n        future.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void addAll(Promise... promises) {\n        addAll((Future[]) promises);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void addAll(Future... futures) {\n        for (Future future : futures) {\n            this.add(future);\n        }\n    }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void finish(Promise<Void> aggregatePromise) {\n        ObjectUtil.checkNotNull(aggregatePromise, \"aggregatePromise\");\n        checkInEventLoop();\n        if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = aggregatePromise;\n        if (doneCount == expectedCount) {\n            tryPromise();\n        }\n    }\n\n    private void checkInEventLoop() {\n        if (!executor.inEventLoop()) {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean tryPromise() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void checkAddAllowed() {\n        if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "encode-integer-literals", "level": 5, "line_count": 162, "local_path": "expressions/encode-integer-literals/I05__netty__PromiseCombiner__2414d93b.java", "order": 5, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-6faa2414d93b-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 860, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fcf345420c1e-I06", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void operationComplete(final Future<?> future) {\n            if (!((executor.inEventLoop()))) {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void run() {\n                        operationComplete0(future);\n                    }\n                });\n            } else {\n                operationComplete0(future);\n            }\n        }\n\n        private void operationComplete0(Future<?> future) {\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!((!future.isSuccess() && cause == null))) {} else {\n                cause = future.cause();\n            }\n            if (!((doneCount == expectedCount && aggregatePromise != null))) {} else {\n                tryPromise();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\n    }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor executor) {\n        this.executor = ObjectUtil.checkNotNull(executor, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void add(Promise promise) {\n        add((Future) promise);\n    }\n\n    /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add(Future future) {\n        checkAddAllowed();\n        checkInEventLoop();\n        ++expectedCount;\n        future.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void addAll(Promise... promises) {\n        addAll((Future[]) promises);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void addAll(Future... futures) {\n        for (Future future : futures) {\n            this.add(future);\n        }\n    }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void finish(Promise<Void> aggregatePromise) {\n        ObjectUtil.checkNotNull(aggregatePromise, \"aggregatePromise\");\n        checkInEventLoop();\n        if (!((this.aggregatePromise != null))) {} else {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = aggregatePromise;\n        if (!((doneCount == expectedCount))) {} else {\n            tryPromise();\n        }\n    }\n\n    private void checkInEventLoop() {\n        if (!((!executor.inEventLoop()))) {} else {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean tryPromise() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void checkAddAllowed() {\n        if (!((aggregatePromise != null))) {} else {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "0f83386f4db2dc58ffd273177e08a7cc22338f4d1a04658e6861331cf40b5f23", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "invert-conditions", "level": 6, "line_count": 162, "local_path": "expressions/invert-conditions/I06__netty__PromiseCombiner__45420c1e.java", "order": 6, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 7}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-fcf345420c1e-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 861, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9dac1e2d6bb6-I07", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void operationComplete(final Future<?> future) {\nif (((0xC9A ^ 0xC9A) != 0)) { throw new AssertionError(); }\n\n            if (executor.inEventLoop()) {\n                operationComplete0(future);\n            } else {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void run() {\nif (((0x8D7F ^ 0x8D7F) != 0)) { throw new AssertionError(); }\n\n                        operationComplete0(future);\n                    }\n                });\n            }\n        }\n\n        private void operationComplete0(Future<?> future) {\nif (((0x703D ^ 0x703D) != 0)) { throw new AssertionError(); }\n\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!future.isSuccess() && cause == null) {\n                cause = future.cause();\n            }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                tryPromise();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\nif (((0x3FD7 ^ 0x3FD7) != 0)) { throw new AssertionError(); }\n\n    }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor executor) {\nif (((0x7661 ^ 0x7661) != 0)) { throw new AssertionError(); }\n\n        this.executor = ObjectUtil.checkNotNull(executor, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void add(Promise promise) {\nif (((0xAD38 ^ 0xAD38) != 0)) { throw new AssertionError(); }\n\n        add((Future) promise);\n    }\n\n    /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add(Future future) {\nif (((0x3975 ^ 0x3975) != 0)) { throw new AssertionError(); }\n\n        checkAddAllowed();\n        checkInEventLoop();\n        ++expectedCount;\n        future.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void addAll(Promise... promises) {\nif (((0x7F5E ^ 0x7F5E) != 0)) { throw new AssertionError(); }\n\n        addAll((Future[]) promises);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void addAll(Future... futures) {\nif (((0x159 ^ 0x159) != 0)) { throw new AssertionError(); }\n\n        for (Future future : futures) {\n            this.add(future);\n        }\n    }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void finish(Promise<Void> aggregatePromise) {\nif (((0xF03C ^ 0xF03C) != 0)) { throw new AssertionError(); }\n\n        ObjectUtil.checkNotNull(aggregatePromise, \"aggregatePromise\");\n        checkInEventLoop();\n        if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = aggregatePromise;\n        if (doneCount == expectedCount) {\n            tryPromise();\n        }\n    }\n\n    private void checkInEventLoop() {\nif (((0x5FAC ^ 0x5FAC) != 0)) { throw new AssertionError(); }\n\n        if (!executor.inEventLoop()) {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean tryPromise() {\nif (((0x3F3B ^ 0x3F3B) != 0)) { throw new AssertionError(); }\n\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void checkAddAllowed() {\nif (((0x97A2 ^ 0x97A2) != 0)) { throw new AssertionError(); }\n\n        if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "67e88220f2a7afaaebdf6624d862abe14e034660f8d4ec0673caf4d9879d2d47", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "insert-dead-branches", "level": 7, "line_count": 188, "local_path": "code-injection/insert-dead-branches/I07__netty__PromiseCombiner__1e2d6bb6.java", "order": 7, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 13}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-9dac1e2d6bb6-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 862, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-19ae034c3776-I08", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void operationComplete(final Future<?> future) {\n            if (executor.inEventLoop()) {\n                operationComplete0(future);\n            } else {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void run() {\n                        operationComplete0(future);\n                    }\n                });\n            }\n        }\n\n        private void operationComplete0(Future<?> future) {\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!future.isSuccess() && cause == null) {\n                cause = future.cause();\n            }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                tryPromise();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\n    }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor executor) {\n        this.executor = ObjectUtil.checkNotNull(executor, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void add(Promise promise) {\n        add((Future) promise);\n    }\n\n    /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add(Future future) {\n{\n  int runningTotal = 0;\n  for (int currentNumber = 1; currentNumber <= 5; currentNumber++) {\n    runningTotal += currentNumber;\n  }\n}\n\n        checkAddAllowed();\n        checkInEventLoop();\n        ++expectedCount;\n        future.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void addAll(Promise... promises) {\n        addAll((Future[]) promises);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void addAll(Future... futures) {\n        for (Future future : futures) {\n            this.add(future);\n        }\n    }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void finish(Promise<Void> aggregatePromise) {\n        ObjectUtil.checkNotNull(aggregatePromise, \"aggregatePromise\");\n        checkInEventLoop();\n        if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = aggregatePromise;\n        if (doneCount == expectedCount) {\n            tryPromise();\n        }\n    }\n\n    private void checkInEventLoop() {\n        if (!executor.inEventLoop()) {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean tryPromise() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void checkAddAllowed() {\n        if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5c8c948ab075b47fdf8e9b3b1ef62aa204d74e811680d97d6fc48bcf34f0af22", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 169, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__PromiseCombiner__034c3776.java", "order": 8, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 0}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-19ae034c3776-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 863, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-88354702a8e6-I09", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void operationComplete(final Future<?> future) {\n            if (executor.inEventLoop()) {\n                operationComplete0(future);\n            } else {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void run() {\n                        operationComplete0(future);\n                    }\n                });\n            }\n        }\n\n        private void operationComplete0(Future<?> future) {\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!future.isSuccess() && cause == null) {\n                cause = future.cause();\n            }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                tryPromise();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\n    }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor executor) {\n        this.executor = ObjectUtil.checkNotNull(executor, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void add(Promise promise) {\n        add((Future) promise);\n    }\n\n    /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add(Future future) {\n        checkAddAllowed();\n        checkInEventLoop();\n        ++expectedCount;\n        future.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void addAll(Promise... promises) {\n        addAll((Future[]) promises);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void addAll(Future... futures) {\n        for (Future future : futures) {\n            this.add(future);\n        }\n    }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void finish(Promise<Void> aggregatePromise) {\n        ObjectUtil.checkNotNull(aggregatePromise, \"aggregatePromise\");\n        checkInEventLoop();\n        if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = aggregatePromise;\n        if (doneCount == expectedCount) {\n            tryPromise();\n        }\n    }\n\n    private void checkInEventLoop() {\n        if (!executor.inEventLoop()) {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean tryPromise() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void checkAddAllowed() {\n{int lI0O_68fcaf06=0x185E,lI0O_350d6b07=~lI0O_68fcaf06;lI0O_68fcaf06=(lI0O_68fcaf06&lI0O_350d6b07)|(lI0O_68fcaf06^lI0O_68fcaf06);lI0O_350d6b07^=lI0O_350d6b07;}\n\n        if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "c04b8687a842b21cab548cdac4130f1e318900edf27783038eb7e8e3eaa85b9f", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 164, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__PromiseCombiner__4702a8e6.java", "order": 9, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 9}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-88354702a8e6-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 864, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7cd1948d9f61-I10", "source": "package io.netty.util.concurrent; import io.netty.util.internal.ObjectUtil; /**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount; private int doneCount;\n    private Promise<Void> aggregatePromise; private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void operationComplete(final Future<?> future) {\n            if (executor.inEventLoop()) {\n                operationComplete0(future);\n            } else { executor.execute(new Runnable() { @Override public void run() { operationComplete0(future); } });\n            } } private void operationComplete0(Future<?> future) {\n            assert executor.inEventLoop();\n            ++doneCount; if (!future.isSuccess() && cause == null) {\n                cause = future.cause(); }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                tryPromise();\n            } } };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated public PromiseCombiner() { this(ImmediateEventExecutor.INSTANCE); }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor executor) { this.executor = ObjectUtil.checkNotNull(executor, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void add(Promise promise) {\n        add((Future) promise);\n    } /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add(Future future) { checkAddAllowed();\n        checkInEventLoop(); ++expectedCount;\n        future.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void addAll(Promise... promises) { addAll((Future[]) promises);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" }) public void addAll(Future... futures) {\n        for (Future future : futures) {\n            this.add(future);\n        } }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void finish(Promise<Void> aggregatePromise) { ObjectUtil.checkNotNull(aggregatePromise, \"aggregatePromise\"); checkInEventLoop(); if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\"); }\n        this.aggregatePromise = aggregatePromise;\n        if (doneCount == expectedCount) { tryPromise();\n        }\n    } private void checkInEventLoop() {\n        if (!executor.inEventLoop()) { throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        } }\n\n    private boolean tryPromise() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause); }\n\n    private void checkAddAllowed() { if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        } }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "48ccc88ab440f96930bdc62e9db863d417ee137e9570056cb625e949bb299d0d", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "partially-compact-layout", "level": 10, "line_count": 121, "local_path": "layout/partially-compact-layout/I10__netty__PromiseCombiner__948d9f61.java", "order": 10, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 93, "line_break_groups_removed": 37, "line_breaks_removed": 41, "whitespace_characters_removed": 320}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-7cd1948d9f61-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 865, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fed04478c9a5-I11", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void operationComplete(final Future<?> future) {\n            if (executor.inEventLoop()) {\n                operationComplete0(future);\n            } else {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void run() {\n                        operationComplete0(future);\n                    }\n                });\n            }\n        }\n\n        private void operationComplete0(Future<?> future) {\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!future.isSuccess() && cause == null) {\n                cause = future.cause();\n            }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                tryPromise();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\n    }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor executor) {\n        this.executor = ObjectUtil.checkNotNull(executor, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void add(Promise promise) {\n        add((Future) promise);\n    }\n\n    /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add(Future future) {\n        checkAddAllowed();\n        checkInEventLoop();\n        ++expectedCount;\n        future.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void addAll(Promise... promises) {\n        addAll((Future[]) promises);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void addAll(Future... futures) {\n        for (Future future : futures) {\n            this.add(future);\n        }\n    }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void finish(Promise<Void> aggregatePromise) {\n        ObjectUtil.checkNotNull(aggregatePromise, \"aggregatePromise\");\n        checkInEventLoop();\n        if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = aggregatePromise;\n        if (doneCount == expectedCount) {\n            tryPromise();\n        }\n    }\n\n    private void checkInEventLoop() {\n        if (!executor.inEventLoop()) {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean tryPromise() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void checkAddAllowed() {\n        if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 162, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__PromiseCombiner__4478c9a5.java", "order": 11, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-fed04478c9a5-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 866, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ab32ff944260-I12", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void operationComplete(final Future<?> future) {\n            if (executor.inEventLoop()) {\n                operationComplete0(future);\n            } else {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void run() {\n                        operationComplete0(future);\n                    }\n                });\n            }\n        }\n\n        private void operationComplete0(Future<?> future) {\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!future.isSuccess() && cause == null) {\n                cause = future.cause();\n            }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                tryPromise();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\n    }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor executor) {\n        this.executor = ObjectUtil.checkNotNull(executor, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void add(Promise promise) {\n        add((Future) promise);\n    }\n\n    /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add(Future future) {\n        checkAddAllowed();\n        checkInEventLoop();\n        ++expectedCount;\n        future.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void addAll(Promise... promises) {\n        addAll((Future[]) promises);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void addAll(Future... futures) {\n        for (Future future : futures) {\n            this.add(future);\n        }\n    }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void finish(Promise<Void> aggregatePromise) {\n        ObjectUtil.checkNotNull(aggregatePromise, \"aggregatePromise\");\n        checkInEventLoop();\n        if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = aggregatePromise;\n        if (doneCount == expectedCount) {\n            tryPromise();\n        }\n    }\n\n    private void checkInEventLoop() {\n        if (!executor.inEventLoop()) {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean tryPromise() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void checkAddAllowed() {\n        if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 162, "local_path": "data-flow/inline-intermediate-variables/I12__netty__PromiseCombiner__ff944260.java", "order": 12, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-ab32ff944260-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 867, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8e7996dde7b3-I13", "source": "package io.netty.util.concurrent;\nimport io.netty.util.internal.ObjectUtil;\n\n/**\n * <p>A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise\n * when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined\n * futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the\n * aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined\n * futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.</p>\n *\n * <p>Callers may populate a promise combiner with any number of futures to be combined via the\n * {@link PromiseCombiner#add(Future)} and {@link PromiseCombiner#addAll(Future[])} methods. When all futures to be\n * combined have been added, callers must provide an aggregate promise to be notified when all combined promises have\n * finished via the {@link PromiseCombiner#finish(Promise)} method.</p>\n *\n * <p>This implementation is <strong>NOT</strong> thread-safe and all methods must be called\n * from the {@link EventExecutor} thread.</p>\n */\npublic final class PromiseCombiner {\n    private int expectedCount;\n    private int doneCount;\n    private Promise<Void> aggregatePromise;\n    private Throwable cause;\n    private final GenericFutureListener<Future<?>> listener = new GenericFutureListener<Future<?>>() {\n        @Override\n        public void operationComplete(final Future<?> future) {\n            if (executor.inEventLoop()) {\n                operationComplete0(future);\n            } else {\n                executor.execute(new Runnable() {\n                    @Override\n                    public void run() {\n                        operationComplete0(future);\n                    }\n                });\n            }\n        }\n\n        private void operationComplete0(Future<?> future) {\n            assert executor.inEventLoop();\n            ++doneCount;\n            if (!future.isSuccess() && cause == null) {\n                cause = future.cause();\n            }\n            if (doneCount == expectedCount && aggregatePromise != null) {\n                tryPromise();\n            }\n        }\n    };\n\n    private final EventExecutor executor;\n\n    /**\n     * Deprecated use {@link PromiseCombiner#PromiseCombiner(EventExecutor)}.\n     */\n    @Deprecated\n    public PromiseCombiner() {\n        this(ImmediateEventExecutor.INSTANCE);\n    }\n\n    /**\n     * The {@link EventExecutor} to use for notifications. You must call {@link #add(Future)}, {@link #addAll(Future[])}\n     * and {@link #finish(Promise)} from within the {@link EventExecutor} thread.\n     *\n     * @param executor the {@link EventExecutor} to use for notifications.\n     */\n    public PromiseCombiner(EventExecutor executor) {\n        this.executor = ObjectUtil.checkNotNull(executor, \"executor\");\n    }\n\n    /**\n     * Adds a new promise to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promise the promise to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#add(Future)}.\n     */\n    @Deprecated\n    public void add(Promise promise) {\n        add((Future) promise);\n    }\n\n    /**\n     * Adds a new future to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param future the future to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void add(Future future) {\n        checkAddAllowed();\n        checkInEventLoop();\n        ++expectedCount;\n        future.addListener(listener);\n    }\n\n    /**\n     * Adds new promises to be combined. New promises may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param promises the promises to add to this promise combiner\n     *\n     * @deprecated Replaced by {@link PromiseCombiner#addAll(Future[])}\n     */\n    @Deprecated\n    public void addAll(Promise... promises) {\n        addAll((Future[]) promises);\n    }\n\n    /**\n     * Adds new futures to be combined. New futures may be added until an aggregate promise is added via the\n     * {@link PromiseCombiner#finish(Promise)} method.\n     *\n     * @param futures the futures to add to this promise combiner\n     */\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n    public void addAll(Future... futures) {\n        {\n          Future[] loopArray = futures;\n          int loopIndex = 0;\n          while (loopIndex < loopArray.length) {\n            Future future = loopArray[loopIndex++];\n            this.add(future);\n          }\n        }\n    }\n\n    /**\n     * <p>Sets the promise to be notified when all combined futures have finished. If all combined futures succeed,\n     * then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will\n     * fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which\n     * failure will be assigned to the aggregate promise is undefined.</p>\n     *\n     * <p>After this method is called, no more futures may be added via the {@link PromiseCombiner#add(Future)} or\n     * {@link PromiseCombiner#addAll(Future[])} methods.</p>\n     *\n     * @param aggregatePromise the promise to notify when all combined futures have finished\n     */\n    public void finish(Promise<Void> aggregatePromise) {\n        ObjectUtil.checkNotNull(aggregatePromise, \"aggregatePromise\");\n        checkInEventLoop();\n        if (this.aggregatePromise != null) {\n            throw new IllegalStateException(\"Already finished\");\n        }\n        this.aggregatePromise = aggregatePromise;\n        if (doneCount == expectedCount) {\n            tryPromise();\n        }\n    }\n\n    private void checkInEventLoop() {\n        if (!executor.inEventLoop()) {\n            throw new IllegalStateException(\"Must be called from EventExecutor thread\");\n        }\n    }\n\n    private boolean tryPromise() {\n        return (cause == null) ? aggregatePromise.trySuccess(null) : aggregatePromise.tryFailure(cause);\n    }\n\n    private void checkAddAllowed() {\n        if (aggregatePromise != null) {\n            throw new IllegalStateException(\"Adding promises is not allowed after finished adding\");\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__PromiseCombiner__2e4181a0.java", "base_sample_id": "source-8c306da417052843", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "277973e0105a51ec6e60fcef8bc44ef6761591d9cbc1ddac283e89d93997c8fe", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java", "interference": "lower-for-to-while", "level": 13, "line_count": 167, "local_path": "control-flow/lower-for-to-while/I13__netty__PromiseCombiner__96dde7b3.java", "order": 13, "original_content_sha256": "d934918b92419b0de1857ce88a8a19ce1de0a11766753d03201295995bcfd8be", "parent_variant_id": "int-732d2e4181a0-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/concurrent/PromiseCombiner.java#L20-L178", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 1, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "PromiseCombiner", "variant_id": "int-8e7996dde7b3-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 868, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-445e68af00cc-SRC", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */\npublic interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */\n    int INDEX_NOT_IN_QUEUE = -1;\n\n    /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int priorityQueueIndex(DefaultPriorityQueue<?> queue);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void priorityQueueIndex(DefaultPriorityQueue<?> queue, int i);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": null, "level": 0, "line_count": 29, "local_path": "source-original/SRC__netty__PriorityQueueNode__68af00cc.java", "order": 0, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-445e68af00cc-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 841, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eea23b28b273-I01", "source": "package io.netty.util.internal;\n\n\n\n\n\npublic interface PriorityQueueNode {\n    \n\n\n    int INDEX_NOT_IN_QUEUE = -1;\n\n    \n\n\n\n\n\n    int priorityQueueIndex(DefaultPriorityQueue<?> queue);\n\n    \n\n\n\n\n\n\n    void priorityQueueIndex(DefaultPriorityQueue<?> queue, int i);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "94b075097b8c0348b1ff414501602eb6fbf615bbe06535d6c325696a1b4449d0", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "remove-comments", "level": 1, "line_count": 29, "local_path": "comments/remove-comments/I01__netty__PriorityQueueNode__3b28b273.java", "order": 1, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 861, "comments_removed": 4}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-eea23b28b273-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 842, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ee3d971ce604-I02", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */\npublic interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */\n    int INDEX_NOT_IN_QUEUE = -1;\n\n    /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int priority(DefaultPriorityQueue<?> que);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void priority(DefaultPriorityQueue<?> que2, int i);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e1ff7f6ce5fe4a9e8444f827015a528749b73b05a4ce1a86799b2ae68938d81b", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "shorten-identifiers", "level": 2, "line_count": 29, "local_path": "identifiers/shorten-identifiers/I02__netty__PriorityQueueNode__971ce604.java", "order": 2, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 3, "local_name_collisions_avoided": 1, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-ee3d971ce604-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 843, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e25b8bb692da-I03", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */\npublic interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */\n    int INDEX_NOT_IN_QUEUE = -1;\n\n    /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int validateAccount(DefaultPriorityQueue<?> entry);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void validateAccount(DefaultPriorityQueue<?> value, int map);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "6c5177ed54e8716dc2299333c0991fe5df7ced6323050b2dc4232020292ff38c", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "mislead-identifiers", "level": 3, "line_count": 29, "local_path": "identifiers/mislead-identifiers/I03__netty__PriorityQueueNode__8bb692da.java", "order": 3, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 3, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 2, "local_random_pool_selections": 3, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 0, "method_name_groups": 1, "method_random_pool_selections": 1, "method_total_length_difference": 3}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-e25b8bb692da-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 844, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-15189b0da9c1-I04", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */\npublic interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */\n    int INDEX_NOT_IN_QUEUE = -1;\n\n    /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int a(DefaultPriorityQueue<?> a);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void a(DefaultPriorityQueue<?> b, int c);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "cd604d649a9806a98e75b19d5062ee3e8c420baf368d3f92f652fb6cad526bd2", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "garble-identifiers", "level": 4, "line_count": 29, "local_path": "identifiers/garble-identifiers/I04__netty__PriorityQueueNode__9b0da9c1.java", "order": 4, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 3, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-15189b0da9c1-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 845, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4361084e6a5f-I05", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */\npublic interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */\n    int INDEX_NOT_IN_QUEUE = -0x1;\n\n    /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int priorityQueueIndex(DefaultPriorityQueue<?> queue);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void priorityQueueIndex(DefaultPriorityQueue<?> queue, int i);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "1f953dfd3d9f094d8cc122462234b9b491af39ba1209c9b93e3b79485fb32834", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "encode-integer-literals", "level": 5, "line_count": 29, "local_path": "expressions/encode-integer-literals/I05__netty__PriorityQueueNode__084e6a5f.java", "order": 5, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-4361084e6a5f-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 846, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-03aea9efa7c0-I06", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */\npublic interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */\n    int INDEX_NOT_IN_QUEUE = -1;\n\n    /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int priorityQueueIndex(DefaultPriorityQueue<?> queue);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void priorityQueueIndex(DefaultPriorityQueue<?> queue, int i);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "invert-conditions", "level": 6, "line_count": 29, "local_path": "expressions/invert-conditions/I06__netty__PriorityQueueNode__a9efa7c0.java", "order": 6, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-03aea9efa7c0-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 847, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b3d148e58235-I07", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */\npublic interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */\n    int INDEX_NOT_IN_QUEUE = -1;\n\n    /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int priorityQueueIndex(DefaultPriorityQueue<?> queue);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void priorityQueueIndex(DefaultPriorityQueue<?> queue, int i);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "insert-dead-branches", "level": 7, "line_count": 29, "local_path": "code-injection/insert-dead-branches/I07__netty__PriorityQueueNode__48e58235.java", "order": 7, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-b3d148e58235-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 848, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1e22a714520d-I08", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */\npublic interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */\n    int INDEX_NOT_IN_QUEUE = -1;\n\n    /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int priorityQueueIndex(DefaultPriorityQueue<?> queue);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void priorityQueueIndex(DefaultPriorityQueue<?> queue, int i);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 29, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__PriorityQueueNode__a714520d.java", "order": 8, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-1e22a714520d-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 849, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a1c7cfb558fb-I09", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */\npublic interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */\n    int INDEX_NOT_IN_QUEUE = -1;\n\n    /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int priorityQueueIndex(DefaultPriorityQueue<?> queue);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void priorityQueueIndex(DefaultPriorityQueue<?> queue, int i);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 29, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__PriorityQueueNode__cfb558fb.java", "order": 9, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-a1c7cfb558fb-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 850, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-50fe6b1e3fa0-I10", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */ public interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */ int INDEX_NOT_IN_QUEUE = -1; /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int priorityQueueIndex(DefaultPriorityQueue<?> queue);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void priorityQueueIndex(DefaultPriorityQueue<?> queue, int i);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "457d91afe7074cfacae7110390b6935acb94598714762374650f58bb26159ad7", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "partially-compact-layout", "level": 10, "line_count": 25, "local_path": "layout/partially-compact-layout/I10__netty__PriorityQueueNode__6b1e3fa0.java", "order": 10, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 9, "line_break_groups_removed": 3, "line_breaks_removed": 4, "whitespace_characters_removed": 9}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-50fe6b1e3fa0-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 851, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9fa904bc03d4-I11", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */\npublic interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */\n    int INDEX_NOT_IN_QUEUE = -1;\n\n    /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int priorityQueueIndex(DefaultPriorityQueue<?> queue);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void priorityQueueIndex(DefaultPriorityQueue<?> queue, int i);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 29, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__PriorityQueueNode__04bc03d4.java", "order": 11, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-9fa904bc03d4-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 852, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7bd4cbce29e2-I12", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */\npublic interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */\n    int INDEX_NOT_IN_QUEUE = -1;\n\n    /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int priorityQueueIndex(DefaultPriorityQueue<?> queue);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void priorityQueueIndex(DefaultPriorityQueue<?> queue, int i);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 29, "local_path": "data-flow/inline-intermediate-variables/I12__netty__PriorityQueueNode__cbce29e2.java", "order": 12, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-7bd4cbce29e2-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 853, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9311400c3f37-I13", "source": "package io.netty.util.internal;\n\n/**\n * Provides methods for {@link DefaultPriorityQueue} to maintain internal state. These methods should generally not be\n * used outside the scope of {@link DefaultPriorityQueue}.\n */\npublic interface PriorityQueueNode {\n    /**\n     * This should be used to initialize the storage returned by {@link #priorityQueueIndex(DefaultPriorityQueue)}.\n     */\n    int INDEX_NOT_IN_QUEUE = -1;\n\n    /**\n     * Get the last value set by {@link #priorityQueueIndex(DefaultPriorityQueue, int)} for the value corresponding to\n     * {@code queue}.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     */\n    int priorityQueueIndex(DefaultPriorityQueue<?> queue);\n\n    /**\n     * Used by {@link DefaultPriorityQueue} to maintain state for an element in the queue.\n     * <p>\n     * Throwing exceptions from this method will result in undefined behavior.\n     * @param queue The queue for which the index is being set.\n     * @param i The index as used by {@link DefaultPriorityQueue}.\n     */\n    void priorityQueueIndex(DefaultPriorityQueue<?> queue, int i);\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__PriorityQueueNode__68af00cc.java", "base_sample_id": "source-1efe1316b30a8ca7", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:common/src/main/java/io/netty/util/internal/PriorityQueueNode.java", "interference": "lower-for-to-while", "level": 13, "line_count": 29, "local_path": "control-flow/lower-for-to-while/I13__netty__PriorityQueueNode__400c3f37.java", "order": 13, "original_content_sha256": "ba5f57e71e6f45b0d6a7280e8dfc4e43b88e0d17dc1d13e585e685099f4cdf41", "parent_variant_id": "int-445e68af00cc-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "common/src/main/java/io/netty/util/internal/PriorityQueueNode.java#L18-L44", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "PriorityQueueNode", "variant_id": "int-9311400c3f37-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 854, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eb08f0cb5f27-SRC", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {\n        if (msg instanceof HttpResponse) {\n            HttpResponse response = (HttpResponse) msg;\n\n            System.err.println(\"STATUS: \" + response.status());\n            System.err.println(\"VERSION: \" + response.protocolVersion());\n            System.err.println();\n\n            if (!response.headers().isEmpty()) {\n                for (CharSequence name: response.headers().names()) {\n                    for (CharSequence value: response.headers().getAll(name)) {\n                        System.err.println(\"HEADER: \" + name + \" = \" + value);\n                    }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(response)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (msg instanceof HttpContent) {\n            HttpContent content = (HttpContent) msg;\n\n            System.err.print(content.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (content instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                ctx.close();\n            }\n        }\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": null, "level": 0, "line_count": 55, "local_path": "source-original/SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "order": 0, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-eb08f0cb5f27-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 785, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2258d4c3c385-I01", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {\n        if (msg instanceof HttpResponse) {\n            HttpResponse response = (HttpResponse) msg;\n\n            System.err.println(\"STATUS: \" + response.status());\n            System.err.println(\"VERSION: \" + response.protocolVersion());\n            System.err.println();\n\n            if (!response.headers().isEmpty()) {\n                for (CharSequence name: response.headers().names()) {\n                    for (CharSequence value: response.headers().getAll(name)) {\n                        System.err.println(\"HEADER: \" + name + \" = \" + value);\n                    }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(response)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (msg instanceof HttpContent) {\n            HttpContent content = (HttpContent) msg;\n\n            System.err.print(content.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (content instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                ctx.close();\n            }\n        }\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "remove-comments", "level": 1, "line_count": 55, "local_path": "comments/remove-comments/I01__netty__HttpSnoopClientHandler__d4c3c385.java", "order": 1, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 0, "comments_removed": 0}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-2258d4c3c385-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 786, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-caadf6b10f65-I02", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void channel(ChannelHandlerContext ctx, HttpObject msg) {\n        if (msg instanceof HttpResponse) {\n            HttpResponse res = (HttpResponse) msg;\n\n            System.err.println(\"STATUS: \" + res.status());\n            System.err.println(\"VERSION: \" + res.protocolVersion());\n            System.err.println();\n\n            if (!res.headers().isEmpty()) {\n                for (CharSequence nam: res.headers().names()) {\n                    for (CharSequence val: res.headers().getAll(nam)) {\n                        System.err.println(\"HEADER: \" + nam + \" = \" + val);\n                    }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(res)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (msg instanceof HttpContent) {\n            HttpContent con = (HttpContent) msg;\n\n            System.err.print(con.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (con instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                ctx.close();\n            }\n        }\n    }\n\n    @Override\n    public void exception(ChannelHandlerContext ctx, Throwable cau) {\n        cau.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "fb913c28145091db18f73f2b90a308c030d14d6883914b202b5791830908371e", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "shorten-identifiers", "level": 2, "line_count": 55, "local_path": "identifiers/shorten-identifiers/I02__netty__HttpSnoopClientHandler__f6b10f65.java", "order": 2, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 18, "identifiers_declared": 8, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-caadf6b10f65-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 787, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-01b9c005f58f-I03", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void validateData(ChannelHandlerContext key, HttpObject age) {\n        if (age instanceof HttpResponse) {\n            HttpResponse finalKey = (HttpResponse) age;\n\n            System.err.println(\"STATUS: \" + finalKey.status());\n            System.err.println(\"VERSION: \" + finalKey.protocolVersion());\n            System.err.println();\n\n            if (!finalKey.headers().isEmpty()) {\n                for (CharSequence mode: finalKey.headers().names()) {\n                    for (CharSequence count: finalKey.headers().getAll(mode)) {\n                        System.err.println(\"HEADER: \" + mode + \" = \" + count);\n                    }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(finalKey)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (age instanceof HttpContent) {\n            HttpContent history = (HttpContent) age;\n\n            System.err.print(history.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (history instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                key.close();\n            }\n        }\n    }\n\n    @Override\n    public void validateBalance(ChannelHandlerContext map, Throwable event) {\n        event.printStackTrace();\n        map.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "1a527915f88bdb02711a354f24625e53dd907d15c51eccf158a5e1b78243b59d", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "mislead-identifiers", "level": 3, "line_count": 55, "local_path": "identifiers/mislead-identifiers/I03__netty__HttpSnoopClientHandler__c005f58f.java", "order": 3, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 18, "identifiers_declared": 8, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 8, "local_random_pool_selections": 8, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 2, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-01b9c005f58f-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 788, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7621d1432f0d-I04", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void a(ChannelHandlerContext a, HttpObject b) {\n        if (b instanceof HttpResponse) {\n            HttpResponse c = (HttpResponse) b;\n\n            System.err.println(\"STATUS: \" + c.status());\n            System.err.println(\"VERSION: \" + c.protocolVersion());\n            System.err.println();\n\n            if (!c.headers().isEmpty()) {\n                for (CharSequence d: c.headers().names()) {\n                    for (CharSequence e: c.headers().getAll(d)) {\n                        System.err.println(\"HEADER: \" + d + \" = \" + e);\n                    }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(c)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (b instanceof HttpContent) {\n            HttpContent f = (HttpContent) b;\n\n            System.err.print(f.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (f instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                a.close();\n            }\n        }\n    }\n\n    @Override\n    public void b(ChannelHandlerContext g, Throwable h) {\n        h.printStackTrace();\n        g.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b0768db55a84b72dccaa7ac7cd46a195132536d087ba727280dc5df207a7d15b", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "garble-identifiers", "level": 4, "line_count": 55, "local_path": "identifiers/garble-identifiers/I04__netty__HttpSnoopClientHandler__d1432f0d.java", "order": 4, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 18, "identifiers_declared": 8, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-7621d1432f0d-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 789, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9446b5adce8e-I05", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {\n        if (msg instanceof HttpResponse) {\n            HttpResponse response = (HttpResponse) msg;\n\n            System.err.println(\"STATUS: \" + response.status());\n            System.err.println(\"VERSION: \" + response.protocolVersion());\n            System.err.println();\n\n            if (!response.headers().isEmpty()) {\n                for (CharSequence name: response.headers().names()) {\n                    for (CharSequence value: response.headers().getAll(name)) {\n                        System.err.println(\"HEADER: \" + name + \" = \" + value);\n                    }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(response)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (msg instanceof HttpContent) {\n            HttpContent content = (HttpContent) msg;\n\n            System.err.print(content.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (content instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                ctx.close();\n            }\n        }\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "encode-integer-literals", "level": 5, "line_count": 55, "local_path": "expressions/encode-integer-literals/I05__netty__HttpSnoopClientHandler__b5adce8e.java", "order": 5, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-9446b5adce8e-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 790, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b1f024ec6fcf-I06", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {\n        if (!((msg instanceof HttpResponse))) {} else {\n            HttpResponse response = (HttpResponse) msg;\n\n            System.err.println(\"STATUS: \" + response.status());\n            System.err.println(\"VERSION: \" + response.protocolVersion());\n            System.err.println();\n\n            if (!response.headers().isEmpty()) {\n                for (CharSequence name: response.headers().names()) {\n                    for (CharSequence value: response.headers().getAll(name)) {\n                        System.err.println(\"HEADER: \" + name + \" = \" + value);\n                    }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(response)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (!((msg instanceof HttpContent))) {} else {\n            HttpContent content = (HttpContent) msg;\n\n            System.err.print(content.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (content instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                ctx.close();\n            }\n        }\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "d647cd4dae2cb3db5d6896b63ee2c57ee398d22de6d24dfd80324862251e7b0b", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "invert-conditions", "level": 6, "line_count": 55, "local_path": "expressions/invert-conditions/I06__netty__HttpSnoopClientHandler__24ec6fcf.java", "order": 6, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-b1f024ec6fcf-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 791, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-aa202c56c1ae-I07", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {\nif (((0xC09C ^ 0xC09C) != 0)) { throw new AssertionError(); }\n\n        if (msg instanceof HttpResponse) {\n            HttpResponse response = (HttpResponse) msg;\n\n            System.err.println(\"STATUS: \" + response.status());\n            System.err.println(\"VERSION: \" + response.protocolVersion());\n            System.err.println();\n\n            if (!response.headers().isEmpty()) {\n                for (CharSequence name: response.headers().names()) {\n                    for (CharSequence value: response.headers().getAll(name)) {\n                        System.err.println(\"HEADER: \" + name + \" = \" + value);\n                    }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(response)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (msg instanceof HttpContent) {\n            HttpContent content = (HttpContent) msg;\n\n            System.err.print(content.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (content instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                ctx.close();\n            }\n        }\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\nif (((0x2CF5 ^ 0x2CF5) != 0)) { throw new AssertionError(); }\n\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "64e19dd6b1f790eeb2528fb0310b234f8189e21977f26e54879ab24e00c91c47", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "insert-dead-branches", "level": 7, "line_count": 59, "local_path": "code-injection/insert-dead-branches/I07__netty__HttpSnoopClientHandler__2c56c1ae.java", "order": 7, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 2}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-aa202c56c1ae-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 792, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6beaad3d1d26-I08", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {\n{\n  int factorial = 1;\n  for (int currentFactor = 2; currentFactor <= 4; currentFactor++) {\n    factorial *= currentFactor;\n  }\n}\n\n        if (msg instanceof HttpResponse) {\n            HttpResponse response = (HttpResponse) msg;\n\n            System.err.println(\"STATUS: \" + response.status());\n            System.err.println(\"VERSION: \" + response.protocolVersion());\n            System.err.println();\n\n            if (!response.headers().isEmpty()) {\n                for (CharSequence name: response.headers().names()) {\n                    for (CharSequence value: response.headers().getAll(name)) {\n                        System.err.println(\"HEADER: \" + name + \" = \" + value);\n                    }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(response)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (msg instanceof HttpContent) {\n            HttpContent content = (HttpContent) msg;\n\n            System.err.print(content.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (content instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                ctx.close();\n            }\n        }\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "f13236d5d548c597361cf2fb6c481788513fccc28cc11487bb79a785fa8b362c", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 62, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__HttpSnoopClientHandler__ad3d1d26.java", "order": 8, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 6}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-6beaad3d1d26-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 793, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c89b80b26a42-I09", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {\n        if (msg instanceof HttpResponse) {\n            HttpResponse response = (HttpResponse) msg;\n\n            System.err.println(\"STATUS: \" + response.status());\n            System.err.println(\"VERSION: \" + response.protocolVersion());\n            System.err.println();\n\n            if (!response.headers().isEmpty()) {\n                for (CharSequence name: response.headers().names()) {\n                    for (CharSequence value: response.headers().getAll(name)) {\n                        System.err.println(\"HEADER: \" + name + \" = \" + value);\n                    }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(response)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (msg instanceof HttpContent) {\n            HttpContent content = (HttpContent) msg;\n\n            System.err.print(content.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (content instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                ctx.close();\n            }\n        }\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n{int lI0O_01a958b3=0,lI0O_add133d8=0;while(lI0O_add133d8<2){lI0O_01a958b3^=(lI0O_add133d8<<1)^0x2;lI0O_add133d8++;}lI0O_01a958b3^=lI0O_01a958b3;}\n\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "cf3de2ed5bb908f5c3058cc7ae2d44d3e70d0f62c2cda47650bcf40e5b428997", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 57, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__HttpSnoopClientHandler__80b26a42.java", "order": 9, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 2}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-c89b80b26a42-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 794, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6537e33aa153-I10", "source": "package io.netty.example.http.snoop; import io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent; import io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {\n        if (msg instanceof HttpResponse) {\n            HttpResponse response = (HttpResponse) msg;\n\n            System.err.println(\"STATUS: \" + response.status());\n            System.err.println(\"VERSION: \" + response.protocolVersion()); System.err.println(); if (!response.headers().isEmpty()) {\n                for (CharSequence name: response.headers().names()) { for (CharSequence value: response.headers().getAll(name)) { System.err.println(\"HEADER: \" + name + \" = \" + value);\n                    } } System.err.println(); }\n\n            if (HttpUtil.isTransferEncodingChunked(response)) { System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\"); }\n        }\n        if (msg instanceof HttpContent) {\n            HttpContent content = (HttpContent) msg;\n\n            System.err.print(content.content().toString(CharsetUtil.UTF_8)); System.err.flush();\n\n            if (content instanceof LastHttpContent) { System.err.println(\"} END OF CONTENT\");\n                ctx.close();\n            } }\n    } @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { cause.printStackTrace(); ctx.close();\n    } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "e39bfde99963df20958d10474e4b09b2987f950ae4706b244cedc04fd44e5616", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "partially-compact-layout", "level": 10, "line_count": 35, "local_path": "layout/partially-compact-layout/I10__netty__HttpSnoopClientHandler__e33aa153.java", "order": 10, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 46, "line_break_groups_removed": 18, "line_breaks_removed": 20, "whitespace_characters_removed": 198}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-6537e33aa153-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 795, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-763e073c34f8-I11", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {\n        if (msg instanceof HttpResponse) {\n            HttpResponse response = (HttpResponse) msg;\n\n            System.err.println(\"STATUS: \" + response.status());\n            System.err.println(\"VERSION: \" + response.protocolVersion());\n            System.err.println();\n\n            if (!response.headers().isEmpty()) {\n                for (CharSequence name: response.headers().names()) {\n                    for (CharSequence value: response.headers().getAll(name)) {\n                        System.err.println(\"HEADER: \" + name + \" = \" + value);\n                    }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(response)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (msg instanceof HttpContent) {\n            HttpContent content = (HttpContent) msg;\n\n            System.err.print(content.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (content instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                ctx.close();\n            }\n        }\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 55, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__HttpSnoopClientHandler__073c34f8.java", "order": 11, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-763e073c34f8-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 796, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ac9bbc2ffe44-I12", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {\n        if (msg instanceof HttpResponse) {\n            HttpResponse response = (HttpResponse) msg;\n\n            System.err.println(\"STATUS: \" + response.status());\n            System.err.println(\"VERSION: \" + response.protocolVersion());\n            System.err.println();\n\n            if (!response.headers().isEmpty()) {\n                for (CharSequence name: response.headers().names()) {\n                    for (CharSequence value: response.headers().getAll(name)) {\n                        System.err.println(\"HEADER: \" + name + \" = \" + value);\n                    }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(response)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (msg instanceof HttpContent) {\n            HttpContent content = (HttpContent) msg;\n\n            System.err.print(content.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (content instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                ctx.close();\n            }\n        }\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 55, "local_path": "data-flow/inline-intermediate-variables/I12__netty__HttpSnoopClientHandler__bc2ffe44.java", "order": 12, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-ac9bbc2ffe44-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 797, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-95b0f53eac54-I13", "source": "package io.netty.example.http.snoop;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.SimpleChannelInboundHandler;\nimport io.netty.handler.codec.http.HttpContent;\nimport io.netty.handler.codec.http.HttpUtil;\nimport io.netty.handler.codec.http.HttpObject;\nimport io.netty.handler.codec.http.HttpResponse;\nimport io.netty.handler.codec.http.LastHttpContent;\nimport io.netty.util.CharsetUtil;\n\npublic class HttpSnoopClientHandler extends SimpleChannelInboundHandler<HttpObject> {\n\n    @Override\n    public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {\n        if (msg instanceof HttpResponse) {\n            HttpResponse response = (HttpResponse) msg;\n\n            System.err.println(\"STATUS: \" + response.status());\n            System.err.println(\"VERSION: \" + response.protocolVersion());\n            System.err.println();\n\n            if (!response.headers().isEmpty()) {\n                {\n                  java.util.Iterator<?> loopIteratorA = (response.headers().names()).iterator();\n                  while (loopIteratorA.hasNext()) {\n                    CharSequence name = (CharSequence) loopIteratorA.next();\n                    {\n                      java.util.Iterator<?> loopIterator = (response.headers().getAll(name)).iterator();\n                      while (loopIterator.hasNext()) {\n                        CharSequence value = (CharSequence) loopIterator.next();\n                        System.err.println(\"HEADER: \" + name + \" = \" + value);\n                      }\n                    }\n                  }\n                }\n                System.err.println();\n            }\n\n            if (HttpUtil.isTransferEncodingChunked(response)) {\n                System.err.println(\"CHUNKED CONTENT {\");\n            } else {\n                System.err.println(\"CONTENT {\");\n            }\n        }\n        if (msg instanceof HttpContent) {\n            HttpContent content = (HttpContent) msg;\n\n            System.err.print(content.content().toString(CharsetUtil.UTF_8));\n            System.err.flush();\n\n            if (content instanceof LastHttpContent) {\n                System.err.println(\"} END OF CONTENT\");\n                ctx.close();\n            }\n        }\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__HttpSnoopClientHandler__f0cb5f27.java", "base_sample_id": "source-04ff14343550a96b", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "23bcfe740596d90750798e38af464f1862a0a734837c2252c984c05a4d77a150", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java", "interference": "lower-for-to-while", "level": 13, "line_count": 63, "local_path": "control-flow/lower-for-to-while/I13__netty__HttpSnoopClientHandler__f53eac54.java", "order": 13, "original_content_sha256": "9458509786bc3fbe9b1e9897b490708e5620c0faf7cf2ad116fb86238ce592fd", "parent_variant_id": "int-eb08f0cb5f27-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/http/snoop/HttpSnoopClientHandler.java#L27-L71", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 2, "enhanced_for_loops_found": 2, "enhanced_for_loops_lowered_to_while": 2, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 2, "for_loops_lowered_to_while": 2, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "HttpSnoopClientHandler", "variant_id": "int-95b0f53eac54-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 798, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7b44d9101902-SRC", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void main(String[] args) throws Exception {\n        // Configure the server.\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler serverHandler = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, 100)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void initChannel(SctpChannel ch) throws Exception {\n                     ch.pipeline().addLast(\n                             //new LoggingHandler(LogLevel.INFO),\n                             serverHandler);\n                 }\n             });\n\n            // Start the server.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            f.channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": null, "level": 0, "line_count": 50, "local_path": "source-original/SRC__netty__SctpEchoServer__d9101902.java", "order": 0, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-7b44d9101902-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 897, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-14a2204a714c-I01", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n\n\n\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void main(String[] args) throws Exception {\n         \n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler serverHandler = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, 100)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void initChannel(SctpChannel ch) throws Exception {\n                     ch.pipeline().addLast(\n                              \n                             serverHandler);\n                 }\n             });\n\n             \n            ChannelFuture f = b.bind(PORT).sync();\n\n             \n            f.channel().closeFuture().sync();\n        } finally {\n             \n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "e693741d3068ec566dee69952907e5cb9f1c62487704fd67de17e85d19d11355", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "remove-comments", "level": 1, "line_count": 50, "local_path": "comments/remove-comments/I01__netty__SctpEchoServer__204a714c.java", "order": 1, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 229, "comments_removed": 6}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-14a2204a714c-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 898, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-aeb217be9012-I02", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void mai(String[] arg) throws Exception {\n        // Configure the server.\n        EventLoopGroup gro = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler server = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(gro)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, 100)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void init(SctpChannel ch) throws Exception {\n                     ch.pipeline().addLast(\n                             //new LoggingHandler(LogLevel.INFO),\n                             server);\n                 }\n             });\n\n            // Start the server.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            f.channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            gro.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "0f353f259d642dfd44cb0e7ae518e61c39b6ddf5714c0cc826e036051288b2fb", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "shorten-identifiers", "level": 2, "line_count": 50, "local_path": "identifiers/shorten-identifiers/I02__netty__SctpEchoServer__17be9012.java", "order": 2, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 6, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-aeb217be9012-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 899, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-994c7b329561-I03", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void sync(String[] flag) throws Exception {\n        // Configure the server.\n        EventLoopGroup value = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler remoteSession = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap map = new ServerBootstrap();\n            map.group(value)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, 100)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void refreshMode(SctpChannel key) throws Exception {\n                     key.pipeline().addLast(\n                             //new LoggingHandler(LogLevel.INFO),\n                             remoteSession);\n                 }\n             });\n\n            // Start the server.\n            ChannelFuture age = map.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            age.channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            value.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "0c763b53bf993f11d66927aa0788459fe0dec01b1088d7b28050a9debf03715d", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "mislead-identifiers", "level": 3, "line_count": 50, "local_path": "identifiers/mislead-identifiers/I03__netty__SctpEchoServer__7b329561.java", "order": 3, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 6, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 3, "local_exact_length_matches": 3, "local_random_pool_selections": 6, "local_total_length_difference": 5, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 2, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-994c7b329561-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 900, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-43a79cf5fd5a-I04", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void a(String[] a) throws Exception {\n        // Configure the server.\n        EventLoopGroup c = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler d = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(c)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, 100)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void b(SctpChannel e) throws Exception {\n                     e.pipeline().addLast(\n                             //new LoggingHandler(LogLevel.INFO),\n                             d);\n                 }\n             });\n\n            // Start the server.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            f.channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            c.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "be43ad5a531e294eb588c83a2de3c35667c9d878ea473c0d6c9c90ebfc33193a", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "garble-identifiers", "level": 4, "line_count": 50, "local_path": "identifiers/garble-identifiers/I04__netty__SctpEchoServer__9cf5fd5a.java", "order": 4, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 6, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-43a79cf5fd5a-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 901, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ca034db80887-I05", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void main(String[] args) throws Exception {\n        // Configure the server.\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler serverHandler = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, 0x64)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void initChannel(SctpChannel ch) throws Exception {\n                     ch.pipeline().addLast(\n                             //new LoggingHandler(LogLevel.INFO),\n                             serverHandler);\n                 }\n             });\n\n            // Start the server.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            f.channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "2f393eb624fcc982db53f1afc5bdfb806f20bdd3d065e9d21b6d04a084ad7e9e", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "encode-integer-literals", "level": 5, "line_count": 50, "local_path": "expressions/encode-integer-literals/I05__netty__SctpEchoServer__4db80887.java", "order": 5, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-ca034db80887-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 902, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5fa1fc3196ff-I06", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void main(String[] args) throws Exception {\n        // Configure the server.\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler serverHandler = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, 100)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void initChannel(SctpChannel ch) throws Exception {\n                     ch.pipeline().addLast(\n                             //new LoggingHandler(LogLevel.INFO),\n                             serverHandler);\n                 }\n             });\n\n            // Start the server.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            f.channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "invert-conditions", "level": 6, "line_count": 50, "local_path": "expressions/invert-conditions/I06__netty__SctpEchoServer__fc3196ff.java", "order": 6, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-5fa1fc3196ff-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 903, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5f59d56600bb-I07", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void main(String[] args) throws Exception {\nif (((0xA3AD ^ 0xA3AD) != 0)) { throw new AssertionError(); }\n\n        // Configure the server.\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler serverHandler = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, 100)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void initChannel(SctpChannel ch) throws Exception {\nif (((0x8A5B ^ 0x8A5B) != 0)) { throw new AssertionError(); }\n\n                     ch.pipeline().addLast(\n                             //new LoggingHandler(LogLevel.INFO),\n                             serverHandler);\n                 }\n             });\n\n            // Start the server.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            f.channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "4c32a0e54c8fa3bf237596d6eb422e200f3427a6e9f0ad8023ba2901e77fd2ea", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "insert-dead-branches", "level": 7, "line_count": 54, "local_path": "code-injection/insert-dead-branches/I07__netty__SctpEchoServer__d56600bb.java", "order": 7, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 2}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-5f59d56600bb-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 904, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e593168e938e-I08", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void main(String[] args) throws Exception {\n        // Configure the server.\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler serverHandler = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, 100)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void initChannel(SctpChannel ch) throws Exception {\n{\n  int firstScore = 72;\n  int secondScore = 85;\n  int higherScore;\n  if (firstScore > secondScore) {\n    higherScore = firstScore;\n  } else {\n    higherScore = secondScore;\n  }\n}\n\n                     ch.pipeline().addLast(\n                             //new LoggingHandler(LogLevel.INFO),\n                             serverHandler);\n                 }\n             });\n\n            // Start the server.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            f.channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "0d62877fd82816103072a3ab97f127116d5b43278b3c86ed085fd0ff47a2b65e", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 61, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__SctpEchoServer__168e938e.java", "order": 8, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 10, "readable_template_index": 3}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-e593168e938e-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 905, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-369065a79b21-I09", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void main(String[] args) throws Exception {\n        // Configure the server.\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler serverHandler = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, 100)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void initChannel(SctpChannel ch) throws Exception {\n{int lI0O_73c60374=(0x512A^0x512A);switch(lI0O_73c60374){case 0:lI0O_73c60374|=0;break;default:lI0O_73c60374&=0;}}\n\n                     ch.pipeline().addLast(\n                             //new LoggingHandler(LogLevel.INFO),\n                             serverHandler);\n                 }\n             });\n\n            // Start the server.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            f.channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "e774d710913f22b9b234b58bef3f31436d573bdb537f962ab0a3483d91dc9e4d", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 52, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__SctpEchoServer__65a79b21.java", "order": 9, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 6}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-369065a79b21-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 906, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-41d8fa364a6f-I10", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup; import io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel; import io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler; /**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\")); public static void main(String[] args) throws Exception { // Configure the server.\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler serverHandler = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap(); b.group(group) .channel(NioSctpServerChannel.class) .option(ChannelOption.SO_BACKLOG, 100)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() { @Override\n                 public void initChannel(SctpChannel ch) throws Exception {\n                     ch.pipeline().addLast( //new LoggingHandler(LogLevel.INFO),\n                             serverHandler);\n                 } });\n\n            // Start the server.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            f.channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            group.shutdownGracefully();\n        }\n    } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "ce0e2e989a9b6569ea68d299946ed12761c18ad6799b55f1690f8cfa6c305c49", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "partially-compact-layout", "level": 10, "line_count": 34, "local_path": "layout/partially-compact-layout/I10__netty__SctpEchoServer__fa364a6f.java", "order": 10, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 37, "line_break_groups_removed": 14, "line_breaks_removed": 16, "whitespace_characters_removed": 111}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-41d8fa364a6f-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 907, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-724a621f3c01-I11", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void main(String[] args) throws Exception {\n        // Configure the server.\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler serverHandler = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            final int a = 50;\n            final int c = 50;\n            b.group(group)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, (a + c))\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void initChannel(SctpChannel ch) throws Exception {\n                     ch.pipeline().addLast(\n                             //new LoggingHandler(LogLevel.INFO),\n                             serverHandler);\n                 }\n             });\n\n            // Start the server.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            f.channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5daba373b6b577c3dd60b49d22f0d408845e037aaf2f4b0117a3c5d965e2b812", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 52, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__SctpEchoServer__621f3c01.java", "order": 11, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 1, "intermediate_variables_introduced": 2, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-724a621f3c01-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 908, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3a15c80799f8-I12", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void main(String[] args) throws Exception {\n        // Configure the server.\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler serverHandler = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, 100)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void initChannel(SctpChannel ch) throws Exception {\n                     ch.pipeline().addLast(\n                             //new LoggingHandler(LogLevel.INFO),\n                             serverHandler);\n                 }\n             });\n\n            // Start the server.\n            \n\n            // Wait until the server socket is closed.\n            (b.bind(PORT).sync()).channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "e42ce621af48cb8b555c2b6d4ab746181367a7f87839551bcca44f78ba47390b", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 50, "local_path": "data-flow/inline-intermediate-variables/I12__netty__SctpEchoServer__c80799f8.java", "order": 12, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-3a15c80799f8-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 909, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0a964b21d03f-I13", "source": "package io.netty.example.sctp;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.ChannelOption;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.sctp.SctpChannel;\nimport io.netty.channel.sctp.nio.NioSctpServerChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Echoes back any received data from a SCTP client.\n */\npublic final class SctpEchoServer {\n\n    static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8007\"));\n\n    public static void main(String[] args) throws Exception {\n        // Configure the server.\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        final SctpEchoServerHandler serverHandler = new SctpEchoServerHandler();\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n             .channel(NioSctpServerChannel.class)\n             .option(ChannelOption.SO_BACKLOG, 100)\n             .handler(new LoggingHandler(LogLevel.INFO))\n             .childHandler(new ChannelInitializer<SctpChannel>() {\n                 @Override\n                 public void initChannel(SctpChannel ch) throws Exception {\n                     ch.pipeline().addLast(\n                             //new LoggingHandler(LogLevel.INFO),\n                             serverHandler);\n                 }\n             });\n\n            // Start the server.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            f.channel().closeFuture().sync();\n        } finally {\n            // Shut down all event loops to terminate all threads.\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__SctpEchoServer__d9101902.java", "base_sample_id": "source-15c5919c850cbfc6", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServer.java", "interference": "lower-for-to-while", "level": 13, "line_count": 50, "local_path": "control-flow/lower-for-to-while/I13__netty__SctpEchoServer__4b21d03f.java", "order": 13, "original_content_sha256": "5de5660afe3699d25404115ca6c3eb18358c4b01baae13a2834be8346398c6d2", "parent_variant_id": "int-7b44d9101902-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServer.java#L30-L66", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "SctpEchoServer", "variant_id": "int-0a964b21d03f-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 910, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0b971dcec00e-SRC", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void channelRead(ChannelHandlerContext ctx, Object msg) {\n        ctx.write(msg);\n    }\n\n    @Override\n    public void channelReadComplete(ChannelHandlerContext ctx) {\n        ctx.flush();\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        // Close the connection when an exception is raised.\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": null, "level": 0, "line_count": 28, "local_path": "source-original/SRC__netty__SctpEchoServerHandler__1dcec00e.java", "order": 0, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-0b971dcec00e-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 883, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d5b2272659e1-I01", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n\n\n\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void channelRead(ChannelHandlerContext ctx, Object msg) {\n        ctx.write(msg);\n    }\n\n    @Override\n    public void channelReadComplete(ChannelHandlerContext ctx) {\n        ctx.flush();\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n         \n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "af6a11d549df868bee123d951c012390ed730571b806d32807e0d896319d92c8", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "remove-comments", "level": 1, "line_count": 28, "local_path": "comments/remove-comments/I01__netty__SctpEchoServerHandler__272659e1.java", "order": 1, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 108, "comments_removed": 2}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-d5b2272659e1-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 884, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5f78302568fd-I02", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void channel(ChannelHandlerContext ctx, Object msg) {\n        ctx.write(msg);\n    }\n\n    @Override\n    public void channel2(ChannelHandlerContext ctx) {\n        ctx.flush();\n    }\n\n    @Override\n    public void exception(ChannelHandlerContext ctx, Throwable cau) {\n        // Close the connection when an exception is raised.\n        cau.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "40ee4428ab2f41939a08d918256cfd5ac54232b8c3c1a767eac70624635c36b0", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "shorten-identifiers", "level": 2, "line_count": 28, "local_path": "identifiers/shorten-identifiers/I02__netty__SctpEchoServerHandler__302568fd.java", "order": 2, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 5, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 1, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-5f78302568fd-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 885, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f7526943435b-I03", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void sendAccount(ChannelHandlerContext age, Object map) {\n        age.write(map);\n    }\n\n    @Override\n    public void validateMessage(ChannelHandlerContext key) {\n        key.flush();\n    }\n\n    @Override\n    public void validateAccount(ChannelHandlerContext data, Throwable state) {\n        // Close the connection when an exception is raised.\n        state.printStackTrace();\n        data.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "c351e4dea17508fbff1d33c8da1cf747bbce3b516fbc8334437e5ca7a2294263", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "mislead-identifiers", "level": 3, "line_count": 28, "local_path": "identifiers/mislead-identifiers/I03__netty__SctpEchoServerHandler__6943435b.java", "order": 3, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 5, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 5, "local_exact_length_matches": 4, "local_random_pool_selections": 5, "local_total_length_difference": 1, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 2, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 4}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-f7526943435b-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 886, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a47c8b4432e0-I04", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void a(ChannelHandlerContext a, Object b) {\n        a.write(b);\n    }\n\n    @Override\n    public void b(ChannelHandlerContext c) {\n        c.flush();\n    }\n\n    @Override\n    public void c(ChannelHandlerContext d, Throwable e) {\n        // Close the connection when an exception is raised.\n        e.printStackTrace();\n        d.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "fa21b5995e82ced18f3fb90f876a69bf7b111a416edf327580e6c21aa9001263", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "garble-identifiers", "level": 4, "line_count": 28, "local_path": "identifiers/garble-identifiers/I04__netty__SctpEchoServerHandler__8b4432e0.java", "order": 4, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 5, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-a47c8b4432e0-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 887, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-68395ab6afbb-I05", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void channelRead(ChannelHandlerContext ctx, Object msg) {\n        ctx.write(msg);\n    }\n\n    @Override\n    public void channelReadComplete(ChannelHandlerContext ctx) {\n        ctx.flush();\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        // Close the connection when an exception is raised.\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "encode-integer-literals", "level": 5, "line_count": 28, "local_path": "expressions/encode-integer-literals/I05__netty__SctpEchoServerHandler__5ab6afbb.java", "order": 5, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-68395ab6afbb-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 888, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-94b68113b436-I06", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void channelRead(ChannelHandlerContext ctx, Object msg) {\n        ctx.write(msg);\n    }\n\n    @Override\n    public void channelReadComplete(ChannelHandlerContext ctx) {\n        ctx.flush();\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        // Close the connection when an exception is raised.\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "invert-conditions", "level": 6, "line_count": 28, "local_path": "expressions/invert-conditions/I06__netty__SctpEchoServerHandler__8113b436.java", "order": 6, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-94b68113b436-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 889, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fa45e100e271-I07", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void channelRead(ChannelHandlerContext ctx, Object msg) {\nif (((0xB07A ^ 0xB07A) != 0)) { throw new AssertionError(); }\n\n        ctx.write(msg);\n    }\n\n    @Override\n    public void channelReadComplete(ChannelHandlerContext ctx) {\nif (((0xD5F2 ^ 0xD5F2) != 0)) { throw new AssertionError(); }\n\n        ctx.flush();\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\nif (((0xE5A8 ^ 0xE5A8) != 0)) { throw new AssertionError(); }\n\n        // Close the connection when an exception is raised.\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "69ab6596c87570aa715fb5b69228d92457bfab385e3a7fdd0e1552e8dab5676e", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "insert-dead-branches", "level": 7, "line_count": 34, "local_path": "code-injection/insert-dead-branches/I07__netty__SctpEchoServerHandler__e100e271.java", "order": 7, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 3}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-fa45e100e271-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 890, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-059100ca0933-I08", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void channelRead(ChannelHandlerContext ctx, Object msg) {\n        ctx.write(msg);\n    }\n\n    @Override\n    public void channelReadComplete(ChannelHandlerContext ctx) {\n{\n  int remainingSteps = 3;\n  while (remainingSteps > 0) {\n    remainingSteps--;\n  }\n}\n\n        ctx.flush();\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        // Close the connection when an exception is raised.\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "366ebdf8d464185e4257220e9f8e0efdee4464298801cb712686b7742f3e5532", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 35, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__SctpEchoServerHandler__00ca0933.java", "order": 8, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 1}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-059100ca0933-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 891, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-843f0c4757be-I09", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void channelRead(ChannelHandlerContext ctx, Object msg) {\n{int lI0O_32a8b37c=0x72DA-0x72DA;lI0O_32a8b37c=(lI0O_32a8b37c==0)?(lI0O_32a8b37c|0):(lI0O_32a8b37c&0);}\n\n        ctx.write(msg);\n    }\n\n    @Override\n    public void channelReadComplete(ChannelHandlerContext ctx) {\n        ctx.flush();\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        // Close the connection when an exception is raised.\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "8e94fe29c13d01862518936cd2ccc233211f11866fb0a6e3c9ba17239d38e996", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 30, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__SctpEchoServerHandler__0c4757be.java", "order": 9, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 1}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-843f0c4757be-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 892, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8255961cd7e3-I10", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */ @Sharable public class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void channelRead(ChannelHandlerContext ctx, Object msg) { ctx.write(msg); }\n\n    @Override\n    public void channelReadComplete(ChannelHandlerContext ctx) { ctx.flush(); }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        // Close the connection when an exception is raised.\n        cause.printStackTrace(); ctx.close();\n    } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "8ade203b96ce111df8cc4dc10d69b88742e16c75701a6ac05afc507ba8ea52df", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "partially-compact-layout", "level": 10, "line_count": 20, "local_path": "layout/partially-compact-layout/I10__netty__SctpEchoServerHandler__961cd7e3.java", "order": 10, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 20, "line_break_groups_removed": 8, "line_breaks_removed": 8, "whitespace_characters_removed": 32}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-8255961cd7e3-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 893, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9fa8101fd2a9-I11", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void channelRead(ChannelHandlerContext ctx, Object msg) {\n        ctx.write(msg);\n    }\n\n    @Override\n    public void channelReadComplete(ChannelHandlerContext ctx) {\n        ctx.flush();\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        // Close the connection when an exception is raised.\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 28, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__SctpEchoServerHandler__101fd2a9.java", "order": 11, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-9fa8101fd2a9-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 894, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8435d7cc3fbb-I12", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void channelRead(ChannelHandlerContext ctx, Object msg) {\n        ctx.write(msg);\n    }\n\n    @Override\n    public void channelReadComplete(ChannelHandlerContext ctx) {\n        ctx.flush();\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        // Close the connection when an exception is raised.\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 28, "local_path": "data-flow/inline-intermediate-variables/I12__netty__SctpEchoServerHandler__d7cc3fbb.java", "order": 12, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-8435d7cc3fbb-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 895, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-649a611f9bd8-I13", "source": "package io.netty.example.sctp;\nimport io.netty.channel.ChannelHandler.Sharable;\nimport io.netty.channel.ChannelHandlerContext;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\n\n/**\n * Handler implementation for the SCTP echo server.\n */\n@Sharable\npublic class SctpEchoServerHandler extends ChannelInboundHandlerAdapter {\n\n    @Override\n    public void channelRead(ChannelHandlerContext ctx, Object msg) {\n        ctx.write(msg);\n    }\n\n    @Override\n    public void channelReadComplete(ChannelHandlerContext ctx) {\n        ctx.flush();\n    }\n\n    @Override\n    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {\n        // Close the connection when an exception is raised.\n        cause.printStackTrace();\n        ctx.close();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__SctpEchoServerHandler__1dcec00e.java", "base_sample_id": "source-e050135b95773345", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java", "interference": "lower-for-to-while", "level": 13, "line_count": 28, "local_path": "control-flow/lower-for-to-while/I13__netty__SctpEchoServerHandler__611f9bd8.java", "order": 13, "original_content_sha256": "b37dd4135cfad10b3264eda2bd00dfbb2dbf44e03bac8c0de829725c046914b4", "parent_variant_id": "int-0b971dcec00e-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/sctp/SctpEchoServerHandler.java#L22-L44", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "SctpEchoServerHandler", "variant_id": "int-649a611f9bd8-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 896, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-026d5618884d-SRC", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion stompVersion : values()) {\n            subProtocols.add(stompVersion.subProtocol);\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String version, String subProtocol) {\n        this.version = version;\n        this.subProtocol = subProtocol;\n    }\n\n    public String version() {\n        return version;\n    }\n\n    public String subProtocol() {\n        return subProtocol;\n    }\n\n    public static StompVersion findBySubProtocol(String subProtocol) {\n        if (subProtocol != null) {\n            for (StompVersion stompVersion : values()) {\n                if (stompVersion.subProtocol().equals(subProtocol)) {\n                    return stompVersion;\n                }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + subProtocol + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": null, "level": 0, "line_count": 52, "local_path": "source-original/SRC__netty__StompVersion__5618884d.java", "order": 0, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "original", "transformation_stats": {}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-026d5618884d-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 981, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1781f869b466-I01", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion stompVersion : values()) {\n            subProtocols.add(stompVersion.subProtocol);\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String version, String subProtocol) {\n        this.version = version;\n        this.subProtocol = subProtocol;\n    }\n\n    public String version() {\n        return version;\n    }\n\n    public String subProtocol() {\n        return subProtocol;\n    }\n\n    public static StompVersion findBySubProtocol(String subProtocol) {\n        if (subProtocol != null) {\n            for (StompVersion stompVersion : values()) {\n                if (stompVersion.subProtocol().equals(subProtocol)) {\n                    return stompVersion;\n                }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + subProtocol + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "remove-comments", "level": 1, "line_count": 52, "local_path": "comments/remove-comments/I01__netty__StompVersion__f869b466.java", "order": 1, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 0, "comments_removed": 0}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-1781f869b466-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 982, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e56909fff865-I02", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion stomp2 : values()) {\n            subProtocols.add(stomp2.subProtocol);\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String ver, String sub) {\n        this.version = ver;\n        this.subProtocol = sub;\n    }\n\n    public String ver() {\n        return version;\n    }\n\n    public String sub() {\n        return subProtocol;\n    }\n\n    public static StompVersion find(String sub2) {\n        if (sub2 != null) {\n            for (StompVersion stomp3 : values()) {\n                if (stomp3.subProtocol().equals(sub2)) {\n                    return stomp3;\n                }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + sub2 + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e9e568e31d8089dc1e339b99b4719a75e219f57a44916f2abd7328a906b62679", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "shorten-identifiers", "level": 2, "line_count": 52, "local_path": "identifiers/shorten-identifiers/I02__netty__StompVersion__09fff865.java", "order": 2, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 5, "local_name_collisions_avoided": 3, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-e56909fff865-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 983, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-74e8c6641291-I03", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion pendingValue : values()) {\n            subProtocols.add(pendingValue.subProtocol);\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String session, String pendingNode) {\n        this.version = session;\n        this.subProtocol = pendingNode;\n    }\n\n    public String release() {\n        return version;\n    }\n\n    public String readRequest() {\n        return subProtocol;\n    }\n\n    public static StompVersion validateBalance(String secureScore) {\n        if (secureScore != null) {\n            for (StompVersion cachedBuffer : values()) {\n                if (cachedBuffer.subProtocol().equals(secureScore)) {\n                    return cachedBuffer;\n                }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + secureScore + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a815950495178d6f266f09fb62b3c6d84b6949327356cd8927a2b14c423a2e50", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "mislead-identifiers", "level": 3, "line_count": 52, "local_path": "identifiers/mislead-identifiers/I03__netty__StompVersion__c6641291.java", "order": 3, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 5, "local_random_pool_selections": 5, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 2, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 2}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-74e8c6641291-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 984, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b9206a64c3ce-I04", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion a : values()) {\n            subProtocols.add(a.subProtocol);\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String b, String c) {\n        this.version = b;\n        this.subProtocol = c;\n    }\n\n    public String a() {\n        return version;\n    }\n\n    public String b() {\n        return subProtocol;\n    }\n\n    public static StompVersion c(String d) {\n        if (d != null) {\n            for (StompVersion e : values()) {\n                if (e.subProtocol().equals(d)) {\n                    return e;\n                }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + d + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "20310cb284b92e099987716644806ba6be244dde3fceecd40878861c06a24284", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "garble-identifiers", "level": 4, "line_count": 52, "local_path": "identifiers/garble-identifiers/I04__netty__StompVersion__6a64c3ce.java", "order": 4, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 8, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-b9206a64c3ce-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 985, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e4780d45b2ed-I05", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion stompVersion : values()) {\n            subProtocols.add(stompVersion.subProtocol);\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String version, String subProtocol) {\n        this.version = version;\n        this.subProtocol = subProtocol;\n    }\n\n    public String version() {\n        return version;\n    }\n\n    public String subProtocol() {\n        return subProtocol;\n    }\n\n    public static StompVersion findBySubProtocol(String subProtocol) {\n        if (subProtocol != null) {\n            for (StompVersion stompVersion : values()) {\n                if (stompVersion.subProtocol().equals(subProtocol)) {\n                    return stompVersion;\n                }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + subProtocol + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "encode-integer-literals", "level": 5, "line_count": 52, "local_path": "expressions/encode-integer-literals/I05__netty__StompVersion__0d45b2ed.java", "order": 5, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-e4780d45b2ed-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 986, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-18b0d11ac26d-I06", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion stompVersion : values()) {\n            subProtocols.add(stompVersion.subProtocol);\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String version, String subProtocol) {\n        this.version = version;\n        this.subProtocol = subProtocol;\n    }\n\n    public String version() {\n        return version;\n    }\n\n    public String subProtocol() {\n        return subProtocol;\n    }\n\n    public static StompVersion findBySubProtocol(String subProtocol) {\n        if (!((subProtocol != null))) {} else {\n            for (StompVersion stompVersion : values()) {\n                if (stompVersion.subProtocol().equals(subProtocol)) {\n                    return stompVersion;\n                }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + subProtocol + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "214cf8da58328515ec6d58dff81720bb52eb889c7df146a901bbc4c74c4355b1", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "invert-conditions", "level": 6, "line_count": 52, "local_path": "expressions/invert-conditions/I06__netty__StompVersion__d11ac26d.java", "order": 6, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-18b0d11ac26d-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 987, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-54effc236868-I07", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion stompVersion : values()) {\n            subProtocols.add(stompVersion.subProtocol);\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String version, String subProtocol) {\nif (((0xFF8 ^ 0xFF8) != 0)) { throw new AssertionError(); }\n\n        this.version = version;\n        this.subProtocol = subProtocol;\n    }\n\n    public String version() {\nif (((0x9DFF ^ 0x9DFF) != 0)) { throw new AssertionError(); }\n\n        return version;\n    }\n\n    public String subProtocol() {\nif (((0xF8A ^ 0xF8A) != 0)) { throw new AssertionError(); }\n\n        return subProtocol;\n    }\n\n    public static StompVersion findBySubProtocol(String subProtocol) {\nif (((0x979D ^ 0x979D) != 0)) { throw new AssertionError(); }\n\n        if (subProtocol != null) {\n            for (StompVersion stompVersion : values()) {\n                if (stompVersion.subProtocol().equals(subProtocol)) {\n                    return stompVersion;\n                }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + subProtocol + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "741ec65a5af5872761dc2b470a5ad90a6ba0e12fe8fc710aa5be5819a02478c8", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "insert-dead-branches", "level": 7, "line_count": 60, "local_path": "code-injection/insert-dead-branches/I07__netty__StompVersion__fc236868.java", "order": 7, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-54effc236868-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 988, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-518914a9d93c-I08", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion stompVersion : values()) {\n            subProtocols.add(stompVersion.subProtocol);\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String version, String subProtocol) {\n        this.version = version;\n        this.subProtocol = subProtocol;\n    }\n\n    public String version() {\n{\n  int remainingSteps = 3;\n  while (remainingSteps > 0) {\n    remainingSteps--;\n  }\n}\n\n        return version;\n    }\n\n    public String subProtocol() {\n        return subProtocol;\n    }\n\n    public static StompVersion findBySubProtocol(String subProtocol) {\n        if (subProtocol != null) {\n            for (StompVersion stompVersion : values()) {\n                if (stompVersion.subProtocol().equals(subProtocol)) {\n                    return stompVersion;\n                }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + subProtocol + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "95900b41147d2c38b44cd818859f64405ee0fe91091cadbd8dc59e3ed24fdbe2", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 59, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__StompVersion__14a9d93c.java", "order": 8, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 1}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-518914a9d93c-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 989, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-601c19d4b634-I09", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion stompVersion : values()) {\n            subProtocols.add(stompVersion.subProtocol);\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String version, String subProtocol) {\n        this.version = version;\n        this.subProtocol = subProtocol;\n    }\n\n    public String version() {\n        return version;\n    }\n\n    public String subProtocol() {\n        return subProtocol;\n    }\n\n    public static StompVersion findBySubProtocol(String subProtocol) {\n{int lI0O_02916eb9=0xCD81;lI0O_02916eb9=((lI0O_02916eb9^0xCD81)|0)&-1;if(((lI0O_02916eb9&1)==1)){lI0O_02916eb9^=lI0O_02916eb9;}}\n\n        if (subProtocol != null) {\n            for (StompVersion stompVersion : values()) {\n                if (stompVersion.subProtocol().equals(subProtocol)) {\n                    return stompVersion;\n                }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + subProtocol + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "59ddf2075aa0f57f642f6c3651e3cd17267e1c687db64425ee411a054c14de7b", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 54, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__StompVersion__19d4b634.java", "order": 9, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-601c19d4b634-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 990, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d57b412e4dac-I10", "source": "package io.netty.example.stomp.websocket; import io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion { STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\"); public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion stompVersion : values()) { subProtocols.add(stompVersion.subProtocol); }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString(); }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String version, String subProtocol) {\n        this.version = version;\n        this.subProtocol = subProtocol; }\n\n    public String version() {\n        return version; }\n\n    public String subProtocol() { return subProtocol; } public static StompVersion findBySubProtocol(String subProtocol) {\n        if (subProtocol != null) {\n            for (StompVersion stompVersion : values()) {\n                if (stompVersion.subProtocol().equals(subProtocol)) { return stompVersion;\n                }\n            } }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + subProtocol + \"'\"); } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "ec8b475591bf6a0b3096f4597a5be43f54083dbdbf2dcedd7d41653c1d1f6bc7", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "partially-compact-layout", "level": 10, "line_count": 35, "local_path": "layout/partially-compact-layout/I10__netty__StompVersion__412e4dac.java", "order": 10, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 39, "line_break_groups_removed": 15, "line_breaks_removed": 17, "whitespace_characters_removed": 90}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-d57b412e4dac-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 991, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dc1d19f7f4f6-I11", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion stompVersion : values()) {\n            subProtocols.add(stompVersion.subProtocol);\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String version, String subProtocol) {\n        this.version = version;\n        this.subProtocol = subProtocol;\n    }\n\n    public String version() {\n        return version;\n    }\n\n    public String subProtocol() {\n        return subProtocol;\n    }\n\n    public static StompVersion findBySubProtocol(String subProtocol) {\n        if (subProtocol != null) {\n            for (StompVersion stompVersion : values()) {\n                if (stompVersion.subProtocol().equals(subProtocol)) {\n                    return stompVersion;\n                }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + subProtocol + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 52, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__StompVersion__19f7f4f6.java", "order": 11, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-dc1d19f7f4f6-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 992, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-752e1c42a44d-I12", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        for (StompVersion stompVersion : values()) {\n            subProtocols.add(stompVersion.subProtocol);\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String version, String subProtocol) {\n        this.version = version;\n        this.subProtocol = subProtocol;\n    }\n\n    public String version() {\n        return version;\n    }\n\n    public String subProtocol() {\n        return subProtocol;\n    }\n\n    public static StompVersion findBySubProtocol(String subProtocol) {\n        if (subProtocol != null) {\n            for (StompVersion stompVersion : values()) {\n                if (stompVersion.subProtocol().equals(subProtocol)) {\n                    return stompVersion;\n                }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + subProtocol + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 52, "local_path": "data-flow/inline-intermediate-variables/I12__netty__StompVersion__1c42a44d.java", "order": 12, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-752e1c42a44d-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 993, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e29cbd022aab-I13", "source": "package io.netty.example.stomp.websocket;\nimport io.netty.util.AttributeKey;\nimport io.netty.util.internal.StringUtil;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic enum StompVersion {\n\n    STOMP_V11(\"1.1\", \"v11.stomp\"),\n\n    STOMP_V12(\"1.2\", \"v12.stomp\");\n\n    public static final AttributeKey<StompVersion> CHANNEL_ATTRIBUTE_KEY = AttributeKey.valueOf(\"stomp_version\");\n    public static final String SUB_PROTOCOLS;\n\n    static {\n        List<String> subProtocols = new ArrayList<String>(values().length);\n        {\n          StompVersion[] loopArray = values();\n          int loopIndex = 0;\n          while (loopIndex < loopArray.length) {\n            StompVersion stompVersion = loopArray[loopIndex++];\n            subProtocols.add(stompVersion.subProtocol);\n          }\n        }\n\n        SUB_PROTOCOLS = StringUtil.join(\",\", subProtocols).toString();\n    }\n\n    private final String version;\n    private final String subProtocol;\n\n    StompVersion(String version, String subProtocol) {\n        this.version = version;\n        this.subProtocol = subProtocol;\n    }\n\n    public String version() {\n        return version;\n    }\n\n    public String subProtocol() {\n        return subProtocol;\n    }\n\n    public static StompVersion findBySubProtocol(String subProtocol) {\n        if (subProtocol != null) {\n            {\n              StompVersion[] loopArrayA = values();\n              int loopIndexA = 0;\n              while (loopIndexA < loopArrayA.length) {\n                StompVersion stompVersion = loopArrayA[loopIndexA++];\n                if (stompVersion.subProtocol().equals(subProtocol)) {\n                    return stompVersion;\n                }\n              }\n            }\n        }\n\n        throw new IllegalArgumentException(\"Not found StompVersion for '\" + subProtocol + \"'\");\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__StompVersion__5618884d.java", "base_sample_id": "source-de09282e050b32fe", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5149885f5fb19cc4078d90a21e9b5315af63ffaaad7fab0a969851edb8efd520", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java", "interference": "lower-for-to-while", "level": 13, "line_count": 62, "local_path": "control-flow/lower-for-to-while/I13__netty__StompVersion__bd022aab.java", "order": 13, "original_content_sha256": "5a91e45a08adab8f10840fd17f5d163d1a6e51750419097aefda4b6e836259db", "parent_variant_id": "int-026d5618884d-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/stomp/websocket/StompVersion.java#L24-L69", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 2, "enhanced_for_loops_eligible": 2, "enhanced_for_loops_found": 2, "enhanced_for_loops_lowered_to_while": 2, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 2, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "enum", "unit_name": "StompVersion", "variant_id": "int-e29cbd022aab-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 994, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4a130346f14b-SRC", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void main(String[] args) throws Exception {\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void initChannel(SocketChannel ch) {\n                            ch.pipeline().addLast(handler);\n                        }\n                    });\n\n            // Bind and start to accept incoming connections.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            f.channel().closeFuture().sync();\n        } finally {\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": null, "level": 0, "line_count": 49, "local_path": "source-original/SRC__netty__UptimeServer__0346f14b.java", "order": 0, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-4a130346f14b-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1037, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5df9547ac03e-I01", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n\n\n\n\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void main(String[] args) throws Exception {\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void initChannel(SocketChannel ch) {\n                            ch.pipeline().addLast(handler);\n                        }\n                    });\n\n             \n            ChannelFuture f = b.bind(PORT).sync();\n\n             \n             \n             \n            f.channel().closeFuture().sync();\n        } finally {\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "22a4ca045789319c06f1449e552b3c7bbc9c6b760a5ff44dee4faba15cf11c35", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "remove-comments", "level": 1, "line_count": 49, "local_path": "comments/remove-comments/I01__netty__UptimeServer__547ac03e.java", "order": 1, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 289, "comments_removed": 5}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-5df9547ac03e-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1038, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c3c0d36fbf3c-I02", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void mai(String[] arg) throws Exception {\n        EventLoopGroup gro = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(gro)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void init(SocketChannel ch) {\n                            ch.pipeline().addLast(handler);\n                        }\n                    });\n\n            // Bind and start to accept incoming connections.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            f.channel().closeFuture().sync();\n        } finally {\n            gro.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "305b2dc5deba781cd326da9c0e498ee82deead442a2908183361ad54d06c1c4c", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "shorten-identifiers", "level": 2, "line_count": 49, "local_path": "identifiers/shorten-identifiers/I02__netty__UptimeServer__d36fbf3c.java", "order": 2, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 6, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-c3c0d36fbf3c-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1039, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e59ac526e36c-I03", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void send(String[] user) throws Exception {\n        EventLoopGroup order = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap age = new ServerBootstrap();\n            age.group(order)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void createScore(SocketChannel map) {\n                            map.pipeline().addLast(handler);\n                        }\n                    });\n\n            // Bind and start to accept incoming connections.\n            ChannelFuture key = age.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            key.channel().closeFuture().sync();\n        } finally {\n            order.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "9e88e1157e6471f96941ec9bd7d9d04930d1c42b5b7e507c33461157bc928052", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "mislead-identifiers", "level": 3, "line_count": 49, "local_path": "identifiers/mislead-identifiers/I03__netty__UptimeServer__c526e36c.java", "order": 3, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 6, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 2, "local_random_pool_selections": 5, "local_total_length_difference": 5, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 2, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-e59ac526e36c-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1040, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5e069bdd3bb1-I04", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void a(String[] a) throws Exception {\n        EventLoopGroup c = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(c)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void b(SocketChannel d) {\n                            d.pipeline().addLast(handler);\n                        }\n                    });\n\n            // Bind and start to accept incoming connections.\n            ChannelFuture e = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            e.channel().closeFuture().sync();\n        } finally {\n            c.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "042febf4afd699d9b19b8ee48537569ad41591bb71a7ea29b8ef0ac7c2ee46b7", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "garble-identifiers", "level": 4, "line_count": 49, "local_path": "identifiers/garble-identifiers/I04__netty__UptimeServer__9bdd3bb1.java", "order": 4, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 6, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-5e069bdd3bb1-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1041, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-07a1122f54cc-I05", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void main(String[] args) throws Exception {\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void initChannel(SocketChannel ch) {\n                            ch.pipeline().addLast(handler);\n                        }\n                    });\n\n            // Bind and start to accept incoming connections.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            f.channel().closeFuture().sync();\n        } finally {\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "encode-integer-literals", "level": 5, "line_count": 49, "local_path": "expressions/encode-integer-literals/I05__netty__UptimeServer__122f54cc.java", "order": 5, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-07a1122f54cc-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1042, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dec670427c36-I06", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void main(String[] args) throws Exception {\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void initChannel(SocketChannel ch) {\n                            ch.pipeline().addLast(handler);\n                        }\n                    });\n\n            // Bind and start to accept incoming connections.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            f.channel().closeFuture().sync();\n        } finally {\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "invert-conditions", "level": 6, "line_count": 49, "local_path": "expressions/invert-conditions/I06__netty__UptimeServer__70427c36.java", "order": 6, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-dec670427c36-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1043, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a557f641ff26-I07", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\nif (((0xA04E ^ 0xA04E) != 0)) { throw new AssertionError(); }\n\n    }\n\n    public static void main(String[] args) throws Exception {\nif (((0x9163 ^ 0x9163) != 0)) { throw new AssertionError(); }\n\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void initChannel(SocketChannel ch) {\nif (((0x5445 ^ 0x5445) != 0)) { throw new AssertionError(); }\n\n                            ch.pipeline().addLast(handler);\n                        }\n                    });\n\n            // Bind and start to accept incoming connections.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            f.channel().closeFuture().sync();\n        } finally {\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b4ec06746b9d0843ae6f603fda63057a2880d7b7222a708c27678154839d7084", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "insert-dead-branches", "level": 7, "line_count": 55, "local_path": "code-injection/insert-dead-branches/I07__netty__UptimeServer__f641ff26.java", "order": 7, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 3}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-a557f641ff26-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1044, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f99ba0db9a37-I08", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void main(String[] args) throws Exception {\n{\n  int totalScore = 240;\n  int numberOfScores = 3;\n  int averageScore = totalScore / numberOfScores;\n}\n\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void initChannel(SocketChannel ch) {\n                            ch.pipeline().addLast(handler);\n                        }\n                    });\n\n            // Bind and start to accept incoming connections.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            f.channel().closeFuture().sync();\n        } finally {\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "c6ef6d91449ee29f3ff5fe7043aa798e0cddb82fd90111ff554c60cbf4eb2448", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 55, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__UptimeServer__a0db9a37.java", "order": 8, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 5, "readable_template_index": 5}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-f99ba0db9a37-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1045, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-16c1d58de557-I09", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void main(String[] args) throws Exception {\n{int lI0O_f4c1f49c=0xA67C^0xA67C;if(lI0O_f4c1f49c!=0){if(((lI0O_f4c1f49c|1)&1)==0){lI0O_f4c1f49c++;}else{lI0O_f4c1f49c--;}}}\n\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void initChannel(SocketChannel ch) {\n                            ch.pipeline().addLast(handler);\n                        }\n                    });\n\n            // Bind and start to accept incoming connections.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            f.channel().closeFuture().sync();\n        } finally {\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "f7e19de678cac70bbdcb0631a5ffa51b2e05c6aed00aa8133756953689d09fcd", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 51, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__UptimeServer__d58de557.java", "order": 9, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 5}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-16c1d58de557-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1046, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ecf4265c3095-I10", "source": "package io.netty.example.uptime; import io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.handler.logging.LogLevel; import io.netty.handler.logging.LoggingHandler; /**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\")); private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void main(String[] args) throws Exception {\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory()); try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group) .channel(NioServerSocketChannel.class) .handler(new LoggingHandler(LogLevel.INFO)) .childHandler(new ChannelInitializer<SocketChannel>() { @Override\n                        public void initChannel(SocketChannel ch) {\n                            ch.pipeline().addLast(handler);\n                        } });\n\n            // Bind and start to accept incoming connections.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            f.channel().closeFuture().sync();\n        } finally { group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "a6af18bfb1612955f6a55bfa8b11dfa2f9267cd9cbde61b4f23f8c9a0fa9cd90", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "partially-compact-layout", "level": 10, "line_count": 34, "local_path": "layout/partially-compact-layout/I10__netty__UptimeServer__265c3095.java", "order": 10, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 36, "line_break_groups_removed": 14, "line_breaks_removed": 15, "whitespace_characters_removed": 129}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-ecf4265c3095-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1047, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-db472a2c30cf-I11", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void main(String[] args) throws Exception {\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void initChannel(SocketChannel ch) {\n                            ch.pipeline().addLast(handler);\n                        }\n                    });\n\n            // Bind and start to accept incoming connections.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            f.channel().closeFuture().sync();\n        } finally {\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 49, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__UptimeServer__2a2c30cf.java", "order": 11, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-db472a2c30cf-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1048, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5ae45f8721c1-I12", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void main(String[] args) throws Exception {\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void initChannel(SocketChannel ch) {\n                            ch.pipeline().addLast(handler);\n                        }\n                    });\n\n            // Bind and start to accept incoming connections.\n            \n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            (b.bind(PORT).sync()).channel().closeFuture().sync();\n        } finally {\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "2984439163322f04bb03d9fc880d1a501cf879f9493817a0da8c3f6efb2e1a09", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 49, "local_path": "data-flow/inline-intermediate-variables/I12__netty__UptimeServer__5f8721c1.java", "order": 12, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-5ae45f8721c1-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1049, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-42082eb2d33e-I13", "source": "package io.netty.example.uptime;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInitializer;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.channel.socket.SocketChannel;\nimport io.netty.channel.socket.nio.NioServerSocketChannel;\nimport io.netty.handler.logging.LogLevel;\nimport io.netty.handler.logging.LoggingHandler;\n\n/**\n * Uptime server is served as a connection server.\n * So it simply discards all message received.\n */\npublic final class UptimeServer {\n    private static final int PORT = Integer.parseInt(System.getProperty(\"port\", \"8080\"));\n    private static final UptimeServerHandler handler = new UptimeServerHandler();\n\n    private UptimeServer() {\n    }\n\n    public static void main(String[] args) throws Exception {\n        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());\n        try {\n            ServerBootstrap b = new ServerBootstrap();\n            b.group(group)\n                    .channel(NioServerSocketChannel.class)\n                    .handler(new LoggingHandler(LogLevel.INFO))\n                    .childHandler(new ChannelInitializer<SocketChannel>() {\n                        @Override\n                        public void initChannel(SocketChannel ch) {\n                            ch.pipeline().addLast(handler);\n                        }\n                    });\n\n            // Bind and start to accept incoming connections.\n            ChannelFuture f = b.bind(PORT).sync();\n\n            // Wait until the server socket is closed.\n            // In this example, this does not happen, but you can do that to gracefully\n            // shut down your server.\n            f.channel().closeFuture().sync();\n        } finally {\n            group.shutdownGracefully();\n        }\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__UptimeServer__0346f14b.java", "base_sample_id": "source-75efa1d33356b9b9", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:example/src/main/java/io/netty/example/uptime/UptimeServer.java", "interference": "lower-for-to-while", "level": 13, "line_count": 49, "local_path": "control-flow/lower-for-to-while/I13__netty__UptimeServer__2eb2d33e.java", "order": 13, "original_content_sha256": "4d1483a89089e41ee364904ab61e0c720e4beeaadf9fcf59ee6deca9b2841a37", "parent_variant_id": "int-4a130346f14b-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "example/src/main/java/io/netty/example/uptime/UptimeServer.java#L29-L65", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "UptimeServer", "variant_id": "int-42082eb2d33e-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1050, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eff6ee2ca06f-SRC", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */\n    NonOwnedOpenSslCredential(long credential, CredentialType type) {\n        if (credential == 0) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = credential;\n        this.type = type;\n    }\n\n    @Override\n    public long credentialAddress() {\n        if (released) {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType type() {\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential retain() {\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential retain(int increment) {\n        return (OpenSslCredential) super.retain(increment);\n    }\n\n    @Override\n    public OpenSslCredential touch() {\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    protected void deallocate() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": null, "level": 0, "line_count": 72, "local_path": "source-original/SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "order": 0, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-eff6ee2ca06f-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 813, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7a9c20be142a-I01", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n\n\n\n\n\n\n\n\n\n\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    \n\n\n\n\n\n    NonOwnedOpenSslCredential(long credential, CredentialType type) {\n        if (credential == 0) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = credential;\n        this.type = type;\n    }\n\n    @Override\n    public long credentialAddress() {\n        if (released) {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType type() {\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential retain() {\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential retain(int increment) {\n        return (OpenSslCredential) super.retain(increment);\n    }\n\n    @Override\n    public OpenSslCredential touch() {\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    protected void deallocate() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "dc56c1657037d4094f5ff336c146238bc43b47be10f7a72d6942c4e06c6c9594", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "remove-comments", "level": 1, "line_count": 72, "local_path": "comments/remove-comments/I01__netty__NonOwnedOpenSslCredential__20be142a.java", "order": 1, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 636, "comments_removed": 2}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-7a9c20be142a-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 814, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-634a6a1319c8-I02", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */\n    NonOwnedOpenSslCredential(long cre, CredentialType typ) {\n        if (cre == 0) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = cre;\n        this.type = typ;\n    }\n\n    @Override\n    public long credential() {\n        if (released) {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType typ() {\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential ret() {\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential ret(int inc) {\n        return (OpenSslCredential) super.retain(inc);\n    }\n\n    @Override\n    public OpenSslCredential tou() {\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential tou(Object hin) {\n        return this;\n    }\n\n    @Override\n    protected void dea() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "def4f8ff3528ce0a9f329821c56d466320bca62cd07d1a9cb75634c77ca6ba43", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "shorten-identifiers", "level": 2, "line_count": 72, "local_path": "identifiers/shorten-identifiers/I02__netty__NonOwnedOpenSslCredential__6a1319c8.java", "order": 2, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 4, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 7, "method_name_collisions_avoided": 0, "method_name_groups": 5}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-634a6a1319c8-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 815, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7451002fc92c-I03", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */\n    NonOwnedOpenSslCredential(long remoteItem, CredentialType data) {\n        if (remoteItem == 0) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = remoteItem;\n        this.type = data;\n    }\n\n    @Override\n    public long validateSession() {\n        if (released) {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType emit() {\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential handle() {\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential handle(int nextOrder) {\n        return (OpenSslCredential) super.retain(nextOrder);\n    }\n\n    @Override\n    public OpenSslCredential track() {\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential track(Object step) {\n        return this;\n    }\n\n    @Override\n    protected void findConfig() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "0ed5ce5ce93a1fc08be1160e50613e311d3fa8b8b6b42da141df60308ffc1097", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "mislead-identifiers", "level": 3, "line_count": 72, "local_path": "identifiers/mislead-identifiers/I03__netty__NonOwnedOpenSslCredential__002fc92c.java", "order": 3, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 4, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 4, "local_random_pool_selections": 4, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 7, "method_exact_length_matches": 4, "method_name_groups": 5, "method_random_pool_selections": 5, "method_total_length_difference": 2}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-7451002fc92c-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 816, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-28cdc259fb5e-I04", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */\n    NonOwnedOpenSslCredential(long a, CredentialType b) {\n        if (a == 0) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = a;\n        this.type = b;\n    }\n\n    @Override\n    public long a() {\n        if (released) {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType b() {\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential c() {\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential c(int c) {\n        return (OpenSslCredential) super.retain(c);\n    }\n\n    @Override\n    public OpenSslCredential d() {\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential d(Object d) {\n        return this;\n    }\n\n    @Override\n    protected void e() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "8b205b5c2b4e5726506c604d2994fd5224acbf2b8ca2ffedfc4ea850a7385a50", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "garble-identifiers", "level": 4, "line_count": 72, "local_path": "identifiers/garble-identifiers/I04__netty__NonOwnedOpenSslCredential__c259fb5e.java", "order": 4, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 4, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 7, "method_name_collisions_avoided": 0, "method_name_groups": 5}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-28cdc259fb5e-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 817, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3cc7449ae349-I05", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */\n    NonOwnedOpenSslCredential(long credential, CredentialType type) {\n        if (credential == 0x0) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = credential;\n        this.type = type;\n    }\n\n    @Override\n    public long credentialAddress() {\n        if (released) {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType type() {\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential retain() {\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential retain(int increment) {\n        return (OpenSslCredential) super.retain(increment);\n    }\n\n    @Override\n    public OpenSslCredential touch() {\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    protected void deallocate() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "fb2a2fab435631b7e9a1f399295f6795c3af24b34da2d3a1dec3e6a439829179", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "encode-integer-literals", "level": 5, "line_count": 72, "local_path": "expressions/encode-integer-literals/I05__netty__NonOwnedOpenSslCredential__449ae349.java", "order": 5, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-3cc7449ae349-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 818, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-faea0136fcd1-I06", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */\n    NonOwnedOpenSslCredential(long credential, CredentialType type) {\n        if (!((credential == 0))) {} else {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = credential;\n        this.type = type;\n    }\n\n    @Override\n    public long credentialAddress() {\n        if (!((released))) {} else {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType type() {\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential retain() {\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential retain(int increment) {\n        return (OpenSslCredential) super.retain(increment);\n    }\n\n    @Override\n    public OpenSslCredential touch() {\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    protected void deallocate() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "b1d9e1afb32dde8d9856fe4a113478e91f628bc56516571f9259ee104efe4cdb", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "invert-conditions", "level": 6, "line_count": 72, "local_path": "expressions/invert-conditions/I06__netty__NonOwnedOpenSslCredential__0136fcd1.java", "order": 6, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-faea0136fcd1-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 819, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-543adddb15b2-I07", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */\n    NonOwnedOpenSslCredential(long credential, CredentialType type) {\nif (((0xAC11 ^ 0xAC11) != 0)) { throw new AssertionError(); }\n\n        if (credential == 0) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = credential;\n        this.type = type;\n    }\n\n    @Override\n    public long credentialAddress() {\nif (((0xDC97 ^ 0xDC97) != 0)) { throw new AssertionError(); }\n\n        if (released) {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType type() {\nif (((0x646F ^ 0x646F) != 0)) { throw new AssertionError(); }\n\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential retain() {\nif (((0x1C16 ^ 0x1C16) != 0)) { throw new AssertionError(); }\n\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential retain(int increment) {\nif (((0x8226 ^ 0x8226) != 0)) { throw new AssertionError(); }\n\n        return (OpenSslCredential) super.retain(increment);\n    }\n\n    @Override\n    public OpenSslCredential touch() {\nif (((0x192E ^ 0x192E) != 0)) { throw new AssertionError(); }\n\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential touch(Object hint) {\nif (((0x3527 ^ 0x3527) != 0)) { throw new AssertionError(); }\n\n        return this;\n    }\n\n    @Override\n    protected void deallocate() {\nif (((0xA84C ^ 0xA84C) != 0)) { throw new AssertionError(); }\n\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "60abcada71a08010b01484722f82f09c55af006fb1d4267378f961d91d62c47a", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "insert-dead-branches", "level": 7, "line_count": 88, "local_path": "code-injection/insert-dead-branches/I07__netty__NonOwnedOpenSslCredential__dddb15b2.java", "order": 7, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 8}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-543adddb15b2-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 820, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-495234eefe8f-I08", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */\n    NonOwnedOpenSslCredential(long credential, CredentialType type) {\n        if (credential == 0) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = credential;\n        this.type = type;\n    }\n\n    @Override\n    public long credentialAddress() {\n        if (released) {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType type() {\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential retain() {\n{\n  int morningTemperature = 18;\n  int eveningTemperature = 14;\n  int lowerTemperature = morningTemperature;\n  if (eveningTemperature < lowerTemperature) {\n    lowerTemperature = eveningTemperature;\n  }\n}\n\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential retain(int increment) {\n        return (OpenSslCredential) super.retain(increment);\n    }\n\n    @Override\n    public OpenSslCredential touch() {\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    protected void deallocate() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "a6f57b8206277775bd249e57b92771bb1f4d195d6d739842ed29e3d0ae81c8c2", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 81, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__NonOwnedOpenSslCredential__34eefe8f.java", "order": 8, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 4}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-495234eefe8f-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 821, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7a91380b1a81-I09", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */\n    NonOwnedOpenSslCredential(long credential, CredentialType type) {\n        if (credential == 0) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = credential;\n        this.type = type;\n    }\n\n    @Override\n    public long credentialAddress() {\n{int lI0O_405fadea=0xCC1D;lI0O_405fadea=((lI0O_405fadea^0xCC1D)|0)&-1;if(((lI0O_405fadea&1)==1)){lI0O_405fadea^=lI0O_405fadea;}}\n\n        if (released) {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType type() {\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential retain() {\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential retain(int increment) {\n        return (OpenSslCredential) super.retain(increment);\n    }\n\n    @Override\n    public OpenSslCredential touch() {\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    protected void deallocate() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "f8147f108e68fe54e692830d0c42c8b277d3675758fa65987b527e69159d9f11", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 74, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__NonOwnedOpenSslCredential__380b1a81.java", "order": 9, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-7a91380b1a81-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 822, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3753d14e5357-I10", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential; private final CredentialType type;\n    private volatile boolean released; /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */ NonOwnedOpenSslCredential(long credential, CredentialType type) { if (credential == 0) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        } this.credential = credential;\n        this.type = type;\n    }\n\n    @Override public long credentialAddress() {\n        if (released) {\n            throw new IllegalReferenceCountException(); } return credential; }\n\n    @Override\n    public CredentialType type() {\n        return type;\n    } @Override public OpenSslCredential retain() {\n        return (OpenSslCredential) super.retain(); }\n\n    @Override\n    public OpenSslCredential retain(int increment) { return (OpenSslCredential) super.retain(increment); }\n\n    @Override public OpenSslCredential touch() {\n        return (OpenSslCredential) super.touch(); }\n\n    @Override\n    public OpenSslCredential touch(Object hint) {\n        return this;\n    } @Override protected void deallocate() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "f17fc59380f95f13d23fb902d0a76dea5c6d1537c177b80edd1c9fc0c8147e7f", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "partially-compact-layout", "level": 10, "line_count": 51, "local_path": "layout/partially-compact-layout/I10__netty__NonOwnedOpenSslCredential__d14e5357.java", "order": 10, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 47, "line_break_groups_removed": 18, "line_breaks_removed": 21, "whitespace_characters_removed": 95}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-3753d14e5357-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 823, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-145654354a41-I11", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */\n    NonOwnedOpenSslCredential(long credential, CredentialType type) {\n        final int a = 1;\n        final int b = -1;\n        if (credential == (a + b)) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = credential;\n        this.type = type;\n    }\n\n    @Override\n    public long credentialAddress() {\n        if (released) {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType type() {\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential retain() {\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential retain(int increment) {\n        return (OpenSslCredential) super.retain(increment);\n    }\n\n    @Override\n    public OpenSslCredential touch() {\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    protected void deallocate() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "a685b8ab80f4ecd25c92e640f1a10620cf0c7266d101938d1af6caafc02c2c66", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 74, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__NonOwnedOpenSslCredential__54354a41.java", "order": 11, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 1, "intermediate_variables_introduced": 2, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-145654354a41-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 824, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b878b42f1e2c-I12", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */\n    NonOwnedOpenSslCredential(long credential, CredentialType type) {\n        if (credential == 0) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = credential;\n        this.type = type;\n    }\n\n    @Override\n    public long credentialAddress() {\n        if (released) {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType type() {\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential retain() {\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential retain(int increment) {\n        return (OpenSslCredential) super.retain(increment);\n    }\n\n    @Override\n    public OpenSslCredential touch() {\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    protected void deallocate() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 72, "local_path": "data-flow/inline-intermediate-variables/I12__netty__NonOwnedOpenSslCredential__b42f1e2c.java", "order": 12, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-b878b42f1e2c-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 825, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cc921a68b0a4-I13", "source": "package io.netty.handler.ssl;\nimport io.netty.util.AbstractReferenceCounted;\nimport io.netty.util.IllegalReferenceCountException;\n\n/**\n * A non-owning wrapper for an {@link OpenSslCredential} pointer.\n *\n * <p>This class is used when we need to expose an SSL_CREDENTIAL pointer that is managed\n * by OpenSSL itself (e.g., the credential selected during the handshake). Unlike\n * {@link DefaultOpenSslCredential}, this wrapper does not free the underlying credential\n * when its reference count reaches zero, as the lifetime is managed externally.\n *\n * <p>This is a BoringSSL-specific feature.\n */\nfinal class NonOwnedOpenSslCredential extends AbstractReferenceCounted implements OpenSslCredentialPointer {\n\n    private final long credential;\n    private final CredentialType type;\n    private volatile boolean released;\n\n    /**\n     * Creates a new non-owning credential wrapper.\n     *\n     * @param credential the native SSL_CREDENTIAL pointer (must not be 0)\n     * @param type the credential type\n     */\n    NonOwnedOpenSslCredential(long credential, CredentialType type) {\n        if (credential == 0) {\n            throw new IllegalArgumentException(\"credential pointer must not be 0\");\n        }\n        this.credential = credential;\n        this.type = type;\n    }\n\n    @Override\n    public long credentialAddress() {\n        if (released) {\n            throw new IllegalReferenceCountException();\n        }\n        return credential;\n    }\n\n    @Override\n    public CredentialType type() {\n        return type;\n    }\n\n    @Override\n    public OpenSslCredential retain() {\n        return (OpenSslCredential) super.retain();\n    }\n\n    @Override\n    public OpenSslCredential retain(int increment) {\n        return (OpenSslCredential) super.retain(increment);\n    }\n\n    @Override\n    public OpenSslCredential touch() {\n        return (OpenSslCredential) super.touch();\n    }\n\n    @Override\n    public OpenSslCredential touch(Object hint) {\n        return this;\n    }\n\n    @Override\n    protected void deallocate() {\n        released = true;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__NonOwnedOpenSslCredential__ee2ca06f.java", "base_sample_id": "source-59f2165fa979f715", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java", "interference": "lower-for-to-while", "level": 13, "line_count": 72, "local_path": "control-flow/lower-for-to-while/I13__netty__NonOwnedOpenSslCredential__1a68b0a4.java", "order": 13, "original_content_sha256": "249a2a25e9acde6d6d9736e72ee239300d8bb37afae5a014574582589ca01019", "parent_variant_id": "int-eff6ee2ca06f-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/NonOwnedOpenSslCredential.java#L21-L88", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "NonOwnedOpenSslCredential", "variant_id": "int-cc921a68b0a4-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 826, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-18c923308bc4-SRC", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */\n    byte[] sign(SSLEngine engine, int signatureAlgorithm, byte[] input) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] decrypt(SSLEngine engine, byte[] input) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": null, "level": 0, "line_count": 45, "local_path": "source-original/SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "order": 0, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-18c923308bc4-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 827, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e46a82bfb1c8-I01", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n\n\n\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    \n\n\n\n\n\n\n\n\n    byte[] sign(SSLEngine engine, int signatureAlgorithm, byte[] input) throws Exception;\n\n    \n\n\n\n\n\n\n\n    byte[] decrypt(SSLEngine engine, byte[] input) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "c379cfb2d56497d53f934b251ad33860056f0b46ad27cc6f8c292b50448772b9", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "remove-comments", "level": 1, "line_count": 45, "local_path": "comments/remove-comments/I01__netty__OpenSslPrivateKeyMethod__82bfb1c8.java", "order": 1, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 943, "comments_removed": 3}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-e46a82bfb1c8-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 828, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c3083380a1f1-I02", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */\n    byte[] sig(SSLEngine eng, int signature, byte[] inp) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] dec(SSLEngine eng2, byte[] inp2) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "8837eef0d5ab318bac53ef4c01837296b8317994b6584d0002aadc9e02b15655", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "shorten-identifiers", "level": 2, "line_count": 45, "local_path": "identifiers/shorten-identifiers/I02__netty__OpenSslPrivateKeyMethod__3380a1f1.java", "order": 2, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 5, "local_name_collisions_avoided": 2, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-c3083380a1f1-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 829, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-484de5b90184-I03", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */\n    byte[] emit(SSLEngine status, int pendingRequest, byte[] group) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] deliver(SSLEngine config, byte[] count) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b5e38e996202e73fcc02d358e7a036934e0129e3c6cb3d0fa489fdfc3a5640b2", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "mislead-identifiers", "level": 3, "line_count": 45, "local_path": "identifiers/mislead-identifiers/I03__netty__OpenSslPrivateKeyMethod__e5b90184.java", "order": 3, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 4, "local_random_pool_selections": 5, "local_total_length_difference": 4, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 2, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 0}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-484de5b90184-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 830, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9338e6fe7941-I04", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */\n    byte[] a(SSLEngine a, int b, byte[] c) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] b(SSLEngine d, byte[] e) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "8c45672512bed863908fcb527c2e2ed62f4ca64979d79cb6c727ab3931128a38", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "garble-identifiers", "level": 4, "line_count": 45, "local_path": "identifiers/garble-identifiers/I04__netty__OpenSslPrivateKeyMethod__e6fe7941.java", "order": 4, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-9338e6fe7941-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 831, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c020a3db36b1-I05", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */\n    byte[] sign(SSLEngine engine, int signatureAlgorithm, byte[] input) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] decrypt(SSLEngine engine, byte[] input) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "encode-integer-literals", "level": 5, "line_count": 45, "local_path": "expressions/encode-integer-literals/I05__netty__OpenSslPrivateKeyMethod__a3db36b1.java", "order": 5, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-c020a3db36b1-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 832, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0ffb65429cb7-I06", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */\n    byte[] sign(SSLEngine engine, int signatureAlgorithm, byte[] input) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] decrypt(SSLEngine engine, byte[] input) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "invert-conditions", "level": 6, "line_count": 45, "local_path": "expressions/invert-conditions/I06__netty__OpenSslPrivateKeyMethod__65429cb7.java", "order": 6, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-0ffb65429cb7-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 833, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5b8f54b1bde7-I07", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */\n    byte[] sign(SSLEngine engine, int signatureAlgorithm, byte[] input) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] decrypt(SSLEngine engine, byte[] input) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "insert-dead-branches", "level": 7, "line_count": 45, "local_path": "code-injection/insert-dead-branches/I07__netty__OpenSslPrivateKeyMethod__54b1bde7.java", "order": 7, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-5b8f54b1bde7-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 834, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f9ecd91cb4d8-I08", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */\n    byte[] sign(SSLEngine engine, int signatureAlgorithm, byte[] input) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] decrypt(SSLEngine engine, byte[] input) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 45, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__OpenSslPrivateKeyMethod__d91cb4d8.java", "order": 8, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-f9ecd91cb4d8-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 835, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a26692c823dc-I09", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */\n    byte[] sign(SSLEngine engine, int signatureAlgorithm, byte[] input) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] decrypt(SSLEngine engine, byte[] input) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 45, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__OpenSslPrivateKeyMethod__92c823dc.java", "order": 9, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-a26692c823dc-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 836, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-90eb43c72f03-I10", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod; import io.netty.util.internal.UnstableApi; import javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */ @UnstableApi\npublic interface OpenSslPrivateKeyMethod { int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1; int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384; int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384; int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519; int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */ byte[] sign(SSLEngine engine, int signatureAlgorithm, byte[] input) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] decrypt(SSLEngine engine, byte[] input) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "8782cc1d21990efce073f4b4ff9319b5bb66cc941509749e06bfa3c6e3099087", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "partially-compact-layout", "level": 10, "line_count": 36, "local_path": "layout/partially-compact-layout/I10__netty__OpenSslPrivateKeyMethod__43c72f03.java", "order": 10, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 24, "line_break_groups_removed": 9, "line_breaks_removed": 9, "whitespace_characters_removed": 24}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-90eb43c72f03-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 837, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2b698f06140e-I11", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */\n    byte[] sign(SSLEngine engine, int signatureAlgorithm, byte[] input) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] decrypt(SSLEngine engine, byte[] input) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 45, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__OpenSslPrivateKeyMethod__8f06140e.java", "order": 11, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-2b698f06140e-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 838, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3d3fdd971614-I12", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */\n    byte[] sign(SSLEngine engine, int signatureAlgorithm, byte[] input) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] decrypt(SSLEngine engine, byte[] input) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 45, "local_path": "data-flow/inline-intermediate-variables/I12__netty__OpenSslPrivateKeyMethod__dd971614.java", "order": 12, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-3d3fdd971614-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 839, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-85b2c488e035-I13", "source": "package io.netty.handler.ssl;\nimport io.netty.internal.tcnative.SSLPrivateKeyMethod;\nimport io.netty.util.internal.UnstableApi;\nimport javax.net.ssl.SSLEngine;\n\n/**\n * Allow to customize private key signing / decrypting (when using RSA). Only supported when using BoringSSL atm.\n */\n@UnstableApi\npublic interface OpenSslPrivateKeyMethod {\n    int SSL_SIGN_RSA_PKCS1_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA1;\n    int SSL_SIGN_RSA_PKCS1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA256;\n    int SSL_SIGN_RSA_PKCS1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA384;\n    int SSL_SIGN_RSA_PKCS1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_SHA512;\n    int SSL_SIGN_ECDSA_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SHA1;\n    int SSL_SIGN_ECDSA_SECP256R1_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP256R1_SHA256;\n    int SSL_SIGN_ECDSA_SECP384R1_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP384R1_SHA384;\n    int SSL_SIGN_ECDSA_SECP521R1_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_ECDSA_SECP521R1_SHA512;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA256 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA256;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA384 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA384;\n    int SSL_SIGN_RSA_PSS_RSAE_SHA512 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PSS_RSAE_SHA512;\n    int SSL_SIGN_ED25519 = SSLPrivateKeyMethod.SSL_SIGN_ED25519;\n    int SSL_SIGN_RSA_PKCS1_MD5_SHA1 = SSLPrivateKeyMethod.SSL_SIGN_RSA_PKCS1_MD5_SHA1;\n\n    /**\n     * Signs the input with the given key and returns the signed bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param signatureAlgorithm    the algorithm to use for signing\n     * @param input                 the digest itself\n     * @return                      the signed data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the signing\n     */\n    byte[] sign(SSLEngine engine, int signatureAlgorithm, byte[] input) throws Exception;\n\n    /**\n     * Decrypts the input with the given key and returns the decrypted bytes.\n     *\n     * @param engine                the {@link SSLEngine}\n     * @param input                 the input which should be decrypted\n     * @return                      the decrypted data (must not be {@code null})\n     * @throws Exception            thrown if an error is encountered during the decrypting\n     */\n    byte[] decrypt(SSLEngine engine, byte[] input) throws Exception;\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__OpenSslPrivateKeyMethod__23308bc4.java", "base_sample_id": "source-1568941eb9dc818c", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java", "interference": "lower-for-to-while", "level": 13, "line_count": 45, "local_path": "control-flow/lower-for-to-while/I13__netty__OpenSslPrivateKeyMethod__c488e035.java", "order": 13, "original_content_sha256": "97e297b60bbcdb2265cd126df8c28170a2c0cc0bfd5d6450f86af0b7c8024d6b", "parent_variant_id": "int-18c923308bc4-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "handler/src/main/java/io/netty/handler/ssl/OpenSslPrivateKeyMethod.java#L23-L62", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "OpenSslPrivateKeyMethod", "variant_id": "int-85b2c488e035-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 840, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-54d235789937-SRC", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void setup() {\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 64, 64);\n        byteBuffer = ByteBuffer.allocateDirect(64);\n    }\n\n    @TearDown\n    public void tearDown() {\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long setGetLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public long setGetLongByteBuffer() {\n        return byteBuffer.putLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public ByteBuf setLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1);\n    }\n\n    @Benchmark\n    public ByteBuffer setLongByteBuffer() {\n        return byteBuffer.putLong(0, 1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": null, "level": 0, "line_count": 46, "local_path": "source-original/SRC__netty__UnsafeByteBufBenchmark__35789937.java", "order": 0, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-54d235789937-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1023, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a1147f7ac53a-I01", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void setup() {\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 64, 64);\n        byteBuffer = ByteBuffer.allocateDirect(64);\n    }\n\n    @TearDown\n    public void tearDown() {\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long setGetLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public long setGetLongByteBuffer() {\n        return byteBuffer.putLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public ByteBuf setLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1);\n    }\n\n    @Benchmark\n    public ByteBuffer setLongByteBuffer() {\n        return byteBuffer.putLong(0, 1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "remove-comments", "level": 1, "line_count": 46, "local_path": "comments/remove-comments/I01__netty__UnsafeByteBufBenchmark__7f7ac53a.java", "order": 1, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 0, "comments_removed": 0}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-a1147f7ac53a-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1024, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-95320e77a831-I02", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void set() {\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 64, 64);\n        byteBuffer = ByteBuffer.allocateDirect(64);\n    }\n\n    @TearDown\n    public void tear() {\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long set2() {\n        return unsafeBuffer.setLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public long set3() {\n        return byteBuffer.putLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public ByteBuf set4() {\n        return unsafeBuffer.setLong(0, 1);\n    }\n\n    @Benchmark\n    public ByteBuffer set5() {\n        return byteBuffer.putLong(0, 1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "aa99ea38212bc1d5e385359dbc12684108e41bf0b073ad8b501b0812bcdca61b", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "shorten-identifiers", "level": 2, "line_count": 46, "local_path": "identifiers/shorten-identifiers/I02__netty__UnsafeByteBufBenchmark__0e77a831.java", "order": 2, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 6, "method_name_collisions_avoided": 4, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-95320e77a831-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1025, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-20a6951504ce-I03", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void clear() {\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 64, 64);\n        byteBuffer = ByteBuffer.allocateDirect(64);\n    }\n\n    @TearDown\n    public void findItem() {\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long validateSession() {\n        return unsafeBuffer.setLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public long validateMessage() {\n        return byteBuffer.putLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public ByteBuf validateAddress() {\n        return unsafeBuffer.setLong(0, 1);\n    }\n\n    @Benchmark\n    public ByteBuffer validateRequest() {\n        return byteBuffer.putLong(0, 1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a0cd4c881dd006f1d515dc91f02c4e6f790abda51165d8d5383c49b9cff8f61e", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "mislead-identifiers", "level": 3, "line_count": 46, "local_path": "identifiers/mislead-identifiers/I03__netty__UnsafeByteBufBenchmark__951504ce.java", "order": 3, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 0, "local_random_pool_selections": 0, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 2, "method_declarations_renamed": 6, "method_exact_length_matches": 2, "method_name_groups": 6, "method_random_pool_selections": 6, "method_total_length_difference": 20}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-20a6951504ce-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1026, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d8055429f29d-I04", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void a() {\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 64, 64);\n        byteBuffer = ByteBuffer.allocateDirect(64);\n    }\n\n    @TearDown\n    public void b() {\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long c() {\n        return unsafeBuffer.setLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public long d() {\n        return byteBuffer.putLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public ByteBuf e() {\n        return unsafeBuffer.setLong(0, 1);\n    }\n\n    @Benchmark\n    public ByteBuffer f() {\n        return byteBuffer.putLong(0, 1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b3f62cb91574957eee9a09d141bc48a0cd6aa243733d883afb304657fc5809e4", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "garble-identifiers", "level": 4, "line_count": 46, "local_path": "identifiers/garble-identifiers/I04__netty__UnsafeByteBufBenchmark__5429f29d.java", "order": 4, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 6, "method_name_collisions_avoided": 0, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-d8055429f29d-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1027, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fa39faa54d6c-I05", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void setup() {\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 0x40, 0x40);\n        byteBuffer = ByteBuffer.allocateDirect(0x40);\n    }\n\n    @TearDown\n    public void tearDown() {\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long setGetLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0x0, 0x1).getLong(0x0);\n    }\n\n    @Benchmark\n    public long setGetLongByteBuffer() {\n        return byteBuffer.putLong(0x0, 0x1).getLong(0x0);\n    }\n\n    @Benchmark\n    public ByteBuf setLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0x0, 0x1);\n    }\n\n    @Benchmark\n    public ByteBuffer setLongByteBuffer() {\n        return byteBuffer.putLong(0x0, 0x1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "ebd2dd2a43e56aec1180cd853f012c81eb50c8c53c5f1c96f2609bae20ab538f", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "encode-integer-literals", "level": 5, "line_count": 46, "local_path": "expressions/encode-integer-literals/I05__netty__UnsafeByteBufBenchmark__faa54d6c.java", "order": 5, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 13}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-fa39faa54d6c-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1028, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-46cf761786aa-I06", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void setup() {\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 64, 64);\n        byteBuffer = ByteBuffer.allocateDirect(64);\n    }\n\n    @TearDown\n    public void tearDown() {\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long setGetLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public long setGetLongByteBuffer() {\n        return byteBuffer.putLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public ByteBuf setLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1);\n    }\n\n    @Benchmark\n    public ByteBuffer setLongByteBuffer() {\n        return byteBuffer.putLong(0, 1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "invert-conditions", "level": 6, "line_count": 46, "local_path": "expressions/invert-conditions/I06__netty__UnsafeByteBufBenchmark__761786aa.java", "order": 6, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-46cf761786aa-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1029, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1b14add440e0-I07", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void setup() {\nif (((0x1EC ^ 0x1EC) != 0)) { throw new AssertionError(); }\n\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 64, 64);\n        byteBuffer = ByteBuffer.allocateDirect(64);\n    }\n\n    @TearDown\n    public void tearDown() {\nif (((0xCE00 ^ 0xCE00) != 0)) { throw new AssertionError(); }\n\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long setGetLongUnsafeByteBuf() {\nif (((0x80BD ^ 0x80BD) != 0)) { throw new AssertionError(); }\n\n        return unsafeBuffer.setLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public long setGetLongByteBuffer() {\nif (((0x53F3 ^ 0x53F3) != 0)) { throw new AssertionError(); }\n\n        return byteBuffer.putLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public ByteBuf setLongUnsafeByteBuf() {\nif (((0xC12C ^ 0xC12C) != 0)) { throw new AssertionError(); }\n\n        return unsafeBuffer.setLong(0, 1);\n    }\n\n    @Benchmark\n    public ByteBuffer setLongByteBuffer() {\nif (((0x3C7F ^ 0x3C7F) != 0)) { throw new AssertionError(); }\n\n        return byteBuffer.putLong(0, 1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "7532d05c0dedb25bfbcbcadc1dc84e16f7bd821701e049aab493be7f6f65d8d2", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "insert-dead-branches", "level": 7, "line_count": 58, "local_path": "code-injection/insert-dead-branches/I07__netty__UnsafeByteBufBenchmark__add440e0.java", "order": 7, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 6}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-1b14add440e0-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1030, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-74b9afe9f2ad-I08", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void setup() {\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 64, 64);\n        byteBuffer = ByteBuffer.allocateDirect(64);\n    }\n\n    @TearDown\n    public void tearDown() {\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long setGetLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public long setGetLongByteBuffer() {\n{\n  int runningTotal = 0;\n  for (int currentNumber = 1; currentNumber <= 5; currentNumber++) {\n    runningTotal += currentNumber;\n  }\n}\n\n        return byteBuffer.putLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public ByteBuf setLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1);\n    }\n\n    @Benchmark\n    public ByteBuffer setLongByteBuffer() {\n        return byteBuffer.putLong(0, 1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b4cff48c2f79c0dea1c2921c28f8c89b9739c86f2580ed459ba9b9fc182df048", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 53, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__UnsafeByteBufBenchmark__afe9f2ad.java", "order": 8, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 0}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-74b9afe9f2ad-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1031, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-50f53effa270-I09", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void setup() {\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 64, 64);\n        byteBuffer = ByteBuffer.allocateDirect(64);\n    }\n\n    @TearDown\n    public void tearDown() {\n{int lI0O_a050b0bb=(0x355F^0x355F);switch(lI0O_a050b0bb){case 0:lI0O_a050b0bb|=0;break;default:lI0O_a050b0bb&=0;}}\n\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long setGetLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public long setGetLongByteBuffer() {\n        return byteBuffer.putLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public ByteBuf setLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1);\n    }\n\n    @Benchmark\n    public ByteBuffer setLongByteBuffer() {\n        return byteBuffer.putLong(0, 1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "4bc0b5ad19a3d042c70043c988388623768abd391aa82b56118f2a1c301fdc0a", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 48, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__UnsafeByteBufBenchmark__3effa270.java", "order": 9, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 6}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-50f53effa270-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1032, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9880fcf35c80-I10", "source": "package io.netty.microbench.buffer; import io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator; import io.netty.buffer.UnpooledUnsafeDirectByteBuf; import io.netty.microbench.util.AbstractMicrobenchmark; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.Setup; import org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer; private ByteBuffer byteBuffer;\n\n    @Setup public void setup() {\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 64, 64);\n        byteBuffer = ByteBuffer.allocateDirect(64); }\n\n    @TearDown\n    public void tearDown() { unsafeBuffer.release();\n    } @Benchmark\n    public long setGetLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1).getLong(0); }\n\n    @Benchmark\n    public long setGetLongByteBuffer() {\n        return byteBuffer.putLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public ByteBuf setLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1); }\n\n    @Benchmark\n    public ByteBuffer setLongByteBuffer() { return byteBuffer.putLong(0, 1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "4fcf9a7ae6844d0b7309448e6be73686c3d906a0439cad6f7a2b438084552756", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "partially-compact-layout", "level": 10, "line_count": 31, "local_path": "layout/partially-compact-layout/I10__netty__UnsafeByteBufBenchmark__fcf35c80.java", "order": 10, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 37, "line_break_groups_removed": 14, "line_breaks_removed": 15, "whitespace_characters_removed": 41}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-9880fcf35c80-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1033, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c341924f25f9-I11", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void setup() {\n        final int a = 32;\n        final int b = 32;\n        final int c = 32;\n        final int d = 32;\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, (a + b), (c + d));\n        final int e = 32;\n        final int f = 32;\n        byteBuffer = ByteBuffer.allocateDirect((e + f));\n    }\n\n    @TearDown\n    public void tearDown() {\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long setGetLongUnsafeByteBuf() {\n        final int g = 1;\n        final int h = -1;\n        final int i = 2;\n        final int j = -1;\n        final int k = 1;\n        final int l = -1;\n        return unsafeBuffer.setLong((g + h), (i + j)).getLong((k + l));\n    }\n\n    @Benchmark\n    public long setGetLongByteBuffer() {\n        final int m = 1;\n        final int n = -1;\n        final int o = 2;\n        final int p = -1;\n        final int q = 1;\n        final int r = -1;\n        return byteBuffer.putLong((m + n), (o + p)).getLong((q + r));\n    }\n\n    @Benchmark\n    public ByteBuf setLongUnsafeByteBuf() {\n        final int s = 1;\n        final int t = -1;\n        final int u = 2;\n        final int v = -1;\n        return unsafeBuffer.setLong((s + t), (u + v));\n    }\n\n    @Benchmark\n    public ByteBuffer setLongByteBuffer() {\n        final int w = 1;\n        final int x = -1;\n        final int y = 2;\n        final int z = -1;\n        return byteBuffer.putLong((w + x), (y + z));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "bdfebc7d9cb91e123fdc373d68bc776493707f2c461c5e984cd92a94127969e4", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 72, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__UnsafeByteBufBenchmark__924f25f9.java", "order": 11, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 13, "intermediate_variables_introduced": 26, "statements_augmented": 6}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-c341924f25f9-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1034, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-30cecc61967e-I12", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void setup() {\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 64, 64);\n        byteBuffer = ByteBuffer.allocateDirect(64);\n    }\n\n    @TearDown\n    public void tearDown() {\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long setGetLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public long setGetLongByteBuffer() {\n        return byteBuffer.putLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public ByteBuf setLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1);\n    }\n\n    @Benchmark\n    public ByteBuffer setLongByteBuffer() {\n        return byteBuffer.putLong(0, 1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 46, "local_path": "data-flow/inline-intermediate-variables/I12__netty__UnsafeByteBufBenchmark__cc61967e.java", "order": 12, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-30cecc61967e-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1035, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-76bc2f42f1f3-I13", "source": "package io.netty.microbench.buffer;\nimport io.netty.buffer.ByteBuf;\nimport io.netty.buffer.UnpooledByteBufAllocator;\nimport io.netty.buffer.UnpooledUnsafeDirectByteBuf;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Setup;\nimport org.openjdk.jmh.annotations.TearDown;\nimport java.nio.ByteBuffer;\n\npublic class UnsafeByteBufBenchmark extends AbstractMicrobenchmark {\n\n    private ByteBuf unsafeBuffer;\n    private ByteBuffer byteBuffer;\n\n    @Setup\n    public void setup() {\n        unsafeBuffer = new UnpooledUnsafeDirectByteBuf(UnpooledByteBufAllocator.DEFAULT, 64, 64);\n        byteBuffer = ByteBuffer.allocateDirect(64);\n    }\n\n    @TearDown\n    public void tearDown() {\n        unsafeBuffer.release();\n    }\n\n    @Benchmark\n    public long setGetLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public long setGetLongByteBuffer() {\n        return byteBuffer.putLong(0, 1).getLong(0);\n    }\n\n    @Benchmark\n    public ByteBuf setLongUnsafeByteBuf() {\n        return unsafeBuffer.setLong(0, 1);\n    }\n\n    @Benchmark\n    public ByteBuffer setLongByteBuffer() {\n        return byteBuffer.putLong(0, 1);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__UnsafeByteBufBenchmark__35789937.java", "base_sample_id": "source-4984ce225d487dbf", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java", "interference": "lower-for-to-while", "level": 13, "line_count": 46, "local_path": "control-flow/lower-for-to-while/I13__netty__UnsafeByteBufBenchmark__2f42f1f3.java", "order": 13, "original_content_sha256": "549442ff689f1d5d53275cb0baf51d354f4ff449adeb06ee3eec2f1f354e6ddc", "parent_variant_id": "int-54d235789937-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/microbench/buffer/UnsafeByteBufBenchmark.java#L29-L64", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "UnsafeByteBufBenchmark", "variant_id": "int-76bc2f42f1f3-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1036, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-72b521bbeb5a-SRC", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(1)\n@Warmup(iterations = 3)\n@Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] getIPv6ByName() {\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": null, "level": 0, "line_count": 31, "local_path": "source-original/SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "order": 0, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-72b521bbeb5a-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 743, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b805bf41c38f-I01", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(1)\n@Warmup(iterations = 3)\n@Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] getIPv6ByName() {\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "remove-comments", "level": 1, "line_count": 31, "local_path": "comments/remove-comments/I01__netty__GetIpV6ByNameBenchmark__bf41c38f.java", "order": 1, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 0, "comments_removed": 0}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-b805bf41c38f-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 744, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-90125ab10ff0-I02", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(1)\n@Warmup(iterations = 3)\n@Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] get() {\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "96bdfb682f87146163ecd818fb09a858dd5430b38fd3096da8b411fa79c42835", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "shorten-identifiers", "level": 2, "line_count": 31, "local_path": "identifiers/shorten-identifiers/I02__netty__GetIpV6ByNameBenchmark__5ab10ff0.java", "order": 2, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-90125ab10ff0-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 745, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ae3147395a40-I03", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(1)\n@Warmup(iterations = 3)\n@Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] createAccount() {\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "196c395726564337edc9ce88ecbe6997aede6af61499e3dc2357337ba29ebb8d", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "mislead-identifiers", "level": 3, "line_count": 31, "local_path": "identifiers/mislead-identifiers/I03__netty__GetIpV6ByNameBenchmark__47395a40.java", "order": 3, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 0, "local_random_pool_selections": 0, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 1, "method_exact_length_matches": 1, "method_name_groups": 1, "method_random_pool_selections": 1, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-ae3147395a40-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 746, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5ee04b8a8730-I04", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(1)\n@Warmup(iterations = 3)\n@Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] a() {\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "f683ba52442d7b8ff242d926f09c2c69210690fd68f6673566db3c08b8594e74", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "garble-identifiers", "level": 4, "line_count": 31, "local_path": "identifiers/garble-identifiers/I04__netty__GetIpV6ByNameBenchmark__4b8a8730.java", "order": 4, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-5ee04b8a8730-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 747, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fcd113470966-I05", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(0x1)\n@Warmup(iterations = 0x3)\n@Measurement(iterations = 0x3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] getIPv6ByName() {\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "879b968411666bdea18c5eaa6f1579f57e8ca77dc293199091a71e68d3fb240c", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "encode-integer-literals", "level": 5, "line_count": 31, "local_path": "expressions/encode-integer-literals/I05__netty__GetIpV6ByNameBenchmark__13470966.java", "order": 5, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 3}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-fcd113470966-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 748, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b359886d98b4-I06", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(1)\n@Warmup(iterations = 3)\n@Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] getIPv6ByName() {\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "invert-conditions", "level": 6, "line_count": 31, "local_path": "expressions/invert-conditions/I06__netty__GetIpV6ByNameBenchmark__886d98b4.java", "order": 6, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-b359886d98b4-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 749, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4e01d1179792-I07", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(1)\n@Warmup(iterations = 3)\n@Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] getIPv6ByName() {\nif (((0xC397 ^ 0xC397) != 0)) { throw new AssertionError(); }\n\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b98403d281baceba2ede15a7ac22c9c75de37afe1cab0f194137ec19f7b4995d", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "insert-dead-branches", "level": 7, "line_count": 33, "local_path": "code-injection/insert-dead-branches/I07__netty__GetIpV6ByNameBenchmark__d1179792.java", "order": 7, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 1}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-4e01d1179792-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 750, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2774011acc98-I08", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(1)\n@Warmup(iterations = 3)\n@Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] getIPv6ByName() {\n{\n  int startingPosition = 2;\n  int endingPosition = 9;\n  int travelDistance = endingPosition - startingPosition;\n  if (travelDistance < 0) {\n    travelDistance = -travelDistance;\n  }\n}\n\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "a559bd24a1c494094a47101872edcd5a6ef13e8a524974f1b146bfd5eef0fd56", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 40, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__GetIpV6ByNameBenchmark__011acc98.java", "order": 8, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 9}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-2774011acc98-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 751, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eb1166bdd910-I09", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(1)\n@Warmup(iterations = 3)\n@Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] getIPv6ByName() {\n{int lI0O_70658149=0xB044^0xB044;if(lI0O_70658149!=0){if(((lI0O_70658149|1)&1)==0){lI0O_70658149++;}else{lI0O_70658149--;}}}\n\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "bdba2418db3d825997e0e2abcbcdad09f74af1fd98ae877dfeb60781c25a5784", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 33, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__GetIpV6ByNameBenchmark__66bdd910.java", "order": 9, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 5}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-eb1166bdd910-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 752, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b9de794ceebc-I10", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit; import org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit; @Threads(1)\n@Warmup(iterations = 3) @Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark { @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\", \"fe80::bdad:7a67:6fcd:fa89\", \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    }) private String ip; @Benchmark public byte[] getIPv6ByName() {\n        return NetUtil.getIPv6ByName(ip, true); }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "9b9731e8ea6515865365224604eb30c74ad5d5950390b7b731b307dcadfb3f18", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "partially-compact-layout", "level": 10, "line_count": 18, "local_path": "layout/partially-compact-layout/I10__netty__GetIpV6ByNameBenchmark__794ceebc.java", "order": 10, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 27, "line_break_groups_removed": 10, "line_breaks_removed": 13, "whitespace_characters_removed": 39}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-b9de794ceebc-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 753, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ac56cb58c4be-I11", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(1)\n@Warmup(iterations = 3)\n@Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] getIPv6ByName() {\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 31, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__GetIpV6ByNameBenchmark__cb58c4be.java", "order": 11, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-ac56cb58c4be-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 754, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b3e0674267a9-I12", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(1)\n@Warmup(iterations = 3)\n@Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] getIPv6ByName() {\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 31, "local_path": "data-flow/inline-intermediate-variables/I12__netty__GetIpV6ByNameBenchmark__674267a9.java", "order": 12, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-b3e0674267a9-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 755, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-61f76e0db6c0-I13", "source": "package io.netty.util;\nimport io.netty.microbench.util.AbstractMicrobenchmark;\nimport org.openjdk.jmh.annotations.Benchmark;\nimport org.openjdk.jmh.annotations.Measurement;\nimport org.openjdk.jmh.annotations.OutputTimeUnit;\nimport org.openjdk.jmh.annotations.Param;\nimport org.openjdk.jmh.annotations.Threads;\nimport org.openjdk.jmh.annotations.Warmup;\nimport java.util.concurrent.TimeUnit;\n\n@Threads(1)\n@Warmup(iterations = 3)\n@Measurement(iterations = 3)\n@OutputTimeUnit(TimeUnit.MICROSECONDS)\npublic class GetIpV6ByNameBenchmark extends AbstractMicrobenchmark {\n\n    @Param({\n        \"::\",\n        \"::1234:2345\",\n        \"1234:2345::3456:7890\",\n        \"fe80::bdad:7a67:6fcd:fa89\",\n        \"fe80:bdad:7a67:6fcd::fa89\",\n        \"1234:2345:3456:4567:5678:6789:0:7890\"\n    })\n    private String ip;\n\n    @Benchmark\n    public byte[] getIPv6ByName() {\n        return NetUtil.getIPv6ByName(ip, true);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__GetIpV6ByNameBenchmark__21bbeb5a.java", "base_sample_id": "source-9c778b74c6800fda", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java", "interference": "lower-for-to-while", "level": 13, "line_count": 31, "local_path": "control-flow/lower-for-to-while/I13__netty__GetIpV6ByNameBenchmark__6e0db6c0.java", "order": 13, "original_content_sha256": "3ea57fa912d9e382ae0af3e74741aa4057eeb54a501e5c36d80bae08e1fc87ab", "parent_variant_id": "int-72b521bbeb5a-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "microbench/src/main/java/io/netty/util/GetIpV6ByNameBenchmark.java#L28-L48", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "GetIpV6ByNameBenchmark", "variant_id": "int-61f76e0db6c0-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 756, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4283aa93a795-SRC", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel channel,\n                       InetSocketAddress nameServerAddr,\n                       DnsQueryContextManager queryContextManager,\n                       DnsQueryLifecycleObserver lifecycleObserver,\n                       int maxPayLoadSize, boolean recursionDesired,\n                       long queryTimeoutMillis,\n                       DnsQuestion question, DnsRecord[] additionals,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise) {\n        super(channel, nameServerAddr, queryContextManager, lifecycleObserver, maxPayLoadSize, recursionDesired,\n                // No retry via TCP.\n                queryTimeoutMillis, question, additionals, promise, null, false);\n    }\n\n    @Override\n    protected DnsQuery newQuery(int id, InetSocketAddress nameServerAddr) {\n        return new DefaultDnsQuery(id);\n    }\n\n    @Override\n    protected String protocol() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": null, "level": 0, "line_count": 38, "local_path": "source-original/SRC__netty__TcpDnsQueryContext__aa93a795.java", "order": 0, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-4283aa93a795-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 995, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f15f478c25ed-I01", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel channel,\n                       InetSocketAddress nameServerAddr,\n                       DnsQueryContextManager queryContextManager,\n                       DnsQueryLifecycleObserver lifecycleObserver,\n                       int maxPayLoadSize, boolean recursionDesired,\n                       long queryTimeoutMillis,\n                       DnsQuestion question, DnsRecord[] additionals,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise) {\n        super(channel, nameServerAddr, queryContextManager, lifecycleObserver, maxPayLoadSize, recursionDesired,\n                 \n                queryTimeoutMillis, question, additionals, promise, null, false);\n    }\n\n    @Override\n    protected DnsQuery newQuery(int id, InetSocketAddress nameServerAddr) {\n        return new DefaultDnsQuery(id);\n    }\n\n    @Override\n    protected String protocol() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "6821eff9197c922b9e1d865d30008346f43e169e04523a3fd857bd848b9b1b66", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "remove-comments", "level": 1, "line_count": 38, "local_path": "comments/remove-comments/I01__netty__TcpDnsQueryContext__478c25ed.java", "order": 1, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 19, "comments_removed": 1}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-f15f478c25ed-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 996, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6e915e38acd8-I02", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel cha,\n                       InetSocketAddress name,\n                       DnsQueryContextManager query,\n                       DnsQueryLifecycleObserver lifecycle,\n                       int max, boolean recursion,\n                       long query2,\n                       DnsQuestion que, DnsRecord[] add,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> pro) {\n        super(cha, name, query, lifecycle, max, recursion,\n                // No retry via TCP.\n                query2, que, add, pro, null, false);\n    }\n\n    @Override\n    protected DnsQuery new2(int id, InetSocketAddress name2) {\n        return new DefaultDnsQuery(id);\n    }\n\n    @Override\n    protected String pro() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "5ea91c076f90716af5bae49abfe4fbbf84879bc29b4254bd30b187c6abf9a62f", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "shorten-identifiers", "level": 2, "line_count": 38, "local_path": "identifiers/shorten-identifiers/I02__netty__TcpDnsQueryContext__5e38acd8.java", "order": 2, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 11, "identifiers_declared": 12, "local_name_collisions_avoided": 2, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 1, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-6e915e38acd8-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 997, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-36a4bf11a172-I03", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel message,\n                       InetSocketAddress defaultBalance,\n                       DnsQueryContextManager currentAccount,\n                       DnsQueryLifecycleObserver pendingAccount,\n                       int primaryAccount, boolean currentSession,\n                       long defaultSession,\n                       DnsQuestion duration, DnsRecord[] recentCount,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> address) {\n        super(message, defaultBalance, currentAccount, pendingAccount, primaryAccount, currentSession,\n                // No retry via TCP.\n                defaultSession, duration, recentCount, address, null, false);\n    }\n\n    @Override\n    protected DnsQuery dispatch(int age, InetSocketAddress pendingAddress) {\n        return new DefaultDnsQuery(age);\n    }\n\n    @Override\n    protected String validate() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "859e46b161ad203d60a453f1afec329ad2c871efe3aea4d52cff71728dfacfc4", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "mislead-identifiers", "level": 3, "line_count": 38, "local_path": "identifiers/mislead-identifiers/I03__netty__TcpDnsQueryContext__bf11a172.java", "order": 3, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 11, "identifiers_declared": 12, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 4, "local_exact_length_matches": 7, "local_random_pool_selections": 12, "local_total_length_difference": 15, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 2, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-36a4bf11a172-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 998, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5369ac84518a-I04", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel a,\n                       InetSocketAddress b,\n                       DnsQueryContextManager c,\n                       DnsQueryLifecycleObserver d,\n                       int e, boolean f,\n                       long g,\n                       DnsQuestion h, DnsRecord[] i,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> j) {\n        super(a, b, c, d, e, f,\n                // No retry via TCP.\n                g, h, i, j, null, false);\n    }\n\n    @Override\n    protected DnsQuery a(int k, InetSocketAddress l) {\n        return new DefaultDnsQuery(k);\n    }\n\n    @Override\n    protected String b() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "cd9f17e0cc532d51f36bf3acd64ccd13e40a0f36896d83fd641ca8de60e12896", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "garble-identifiers", "level": 4, "line_count": 38, "local_path": "identifiers/garble-identifiers/I04__netty__TcpDnsQueryContext__ac84518a.java", "order": 4, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 11, "identifiers_declared": 12, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-5369ac84518a-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 999, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fbe098c4f5f2-I05", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel channel,\n                       InetSocketAddress nameServerAddr,\n                       DnsQueryContextManager queryContextManager,\n                       DnsQueryLifecycleObserver lifecycleObserver,\n                       int maxPayLoadSize, boolean recursionDesired,\n                       long queryTimeoutMillis,\n                       DnsQuestion question, DnsRecord[] additionals,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise) {\n        super(channel, nameServerAddr, queryContextManager, lifecycleObserver, maxPayLoadSize, recursionDesired,\n                // No retry via TCP.\n                queryTimeoutMillis, question, additionals, promise, null, false);\n    }\n\n    @Override\n    protected DnsQuery newQuery(int id, InetSocketAddress nameServerAddr) {\n        return new DefaultDnsQuery(id);\n    }\n\n    @Override\n    protected String protocol() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "encode-integer-literals", "level": 5, "line_count": 38, "local_path": "expressions/encode-integer-literals/I05__netty__TcpDnsQueryContext__98c4f5f2.java", "order": 5, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-fbe098c4f5f2-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1000, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f095cbfa2ccc-I06", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel channel,\n                       InetSocketAddress nameServerAddr,\n                       DnsQueryContextManager queryContextManager,\n                       DnsQueryLifecycleObserver lifecycleObserver,\n                       int maxPayLoadSize, boolean recursionDesired,\n                       long queryTimeoutMillis,\n                       DnsQuestion question, DnsRecord[] additionals,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise) {\n        super(channel, nameServerAddr, queryContextManager, lifecycleObserver, maxPayLoadSize, recursionDesired,\n                // No retry via TCP.\n                queryTimeoutMillis, question, additionals, promise, null, false);\n    }\n\n    @Override\n    protected DnsQuery newQuery(int id, InetSocketAddress nameServerAddr) {\n        return new DefaultDnsQuery(id);\n    }\n\n    @Override\n    protected String protocol() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "invert-conditions", "level": 6, "line_count": 38, "local_path": "expressions/invert-conditions/I06__netty__TcpDnsQueryContext__cbfa2ccc.java", "order": 6, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-f095cbfa2ccc-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1001, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-05a3cb4f5b22-I07", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel channel,\n                       InetSocketAddress nameServerAddr,\n                       DnsQueryContextManager queryContextManager,\n                       DnsQueryLifecycleObserver lifecycleObserver,\n                       int maxPayLoadSize, boolean recursionDesired,\n                       long queryTimeoutMillis,\n                       DnsQuestion question, DnsRecord[] additionals,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise) {\n        super(channel, nameServerAddr, queryContextManager, lifecycleObserver, maxPayLoadSize, recursionDesired,\n                // No retry via TCP.\n                queryTimeoutMillis, question, additionals, promise, null, false);\nif (((0xBDA2 ^ 0xBDA2) != 0)) { throw new AssertionError(); }\n\n    }\n\n    @Override\n    protected DnsQuery newQuery(int id, InetSocketAddress nameServerAddr) {\nif (((0x632F ^ 0x632F) != 0)) { throw new AssertionError(); }\n\n        return new DefaultDnsQuery(id);\n    }\n\n    @Override\n    protected String protocol() {\nif (((0xB73E ^ 0xB73E) != 0)) { throw new AssertionError(); }\n\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "6c3e62a74b9e31361f9588d9268d5df359666649e1f5e064b54c7e41b731407b", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "insert-dead-branches", "level": 7, "line_count": 44, "local_path": "code-injection/insert-dead-branches/I07__netty__TcpDnsQueryContext__cb4f5b22.java", "order": 7, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 3}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-05a3cb4f5b22-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1002, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1342811ef8f4-I08", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel channel,\n                       InetSocketAddress nameServerAddr,\n                       DnsQueryContextManager queryContextManager,\n                       DnsQueryLifecycleObserver lifecycleObserver,\n                       int maxPayLoadSize, boolean recursionDesired,\n                       long queryTimeoutMillis,\n                       DnsQuestion question, DnsRecord[] additionals,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise) {\n        super(channel, nameServerAddr, queryContextManager, lifecycleObserver, maxPayLoadSize, recursionDesired,\n                // No retry via TCP.\n                queryTimeoutMillis, question, additionals, promise, null, false);\n{\n  int runningTotal = 0;\n  for (int currentNumber = 1; currentNumber <= 5; currentNumber++) {\n    runningTotal += currentNumber;\n  }\n}\n\n    }\n\n    @Override\n    protected DnsQuery newQuery(int id, InetSocketAddress nameServerAddr) {\n        return new DefaultDnsQuery(id);\n    }\n\n    @Override\n    protected String protocol() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "fb10aca383c1b783e52fa8a269f050d57653e0ad3c30e0c4460cdfccf11847c8", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 45, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__TcpDnsQueryContext__811ef8f4.java", "order": 8, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 0}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-1342811ef8f4-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1003, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-84192e1ab14b-I09", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel channel,\n                       InetSocketAddress nameServerAddr,\n                       DnsQueryContextManager queryContextManager,\n                       DnsQueryLifecycleObserver lifecycleObserver,\n                       int maxPayLoadSize, boolean recursionDesired,\n                       long queryTimeoutMillis,\n                       DnsQuestion question, DnsRecord[] additionals,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise) {\n        super(channel, nameServerAddr, queryContextManager, lifecycleObserver, maxPayLoadSize, recursionDesired,\n                // No retry via TCP.\n                queryTimeoutMillis, question, additionals, promise, null, false);\n    }\n\n    @Override\n    protected DnsQuery newQuery(int id, InetSocketAddress nameServerAddr) {\n{int lI0O_9c214942=0x233F,lI0O_4e3fc50f=~lI0O_9c214942;lI0O_9c214942=(lI0O_9c214942&lI0O_4e3fc50f)|(lI0O_9c214942^lI0O_9c214942);lI0O_4e3fc50f^=lI0O_4e3fc50f;}\n\n        return new DefaultDnsQuery(id);\n    }\n\n    @Override\n    protected String protocol() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "3b1f3283715254a6ea0651986899955cb8402b9e48ebf962b152809214d9da9f", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 40, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__TcpDnsQueryContext__2e1ab14b.java", "order": 9, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 9}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-84192e1ab14b-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1004, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-47f51b432d78-I10", "source": "package io.netty.resolver.dns; import io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture; import io.netty.handler.codec.dns.DefaultDnsQuery; import io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse; import io.netty.util.concurrent.Future; import io.netty.util.concurrent.Promise; import java.net.InetSocketAddress; final class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel channel,\n                       InetSocketAddress nameServerAddr, DnsQueryContextManager queryContextManager, DnsQueryLifecycleObserver lifecycleObserver,\n                       int maxPayLoadSize, boolean recursionDesired,\n                       long queryTimeoutMillis, DnsQuestion question, DnsRecord[] additionals,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise) {\n        super(channel, nameServerAddr, queryContextManager, lifecycleObserver, maxPayLoadSize, recursionDesired,\n                // No retry via TCP.\n                queryTimeoutMillis, question, additionals, promise, null, false); } @Override\n    protected DnsQuery newQuery(int id, InetSocketAddress nameServerAddr) {\n        return new DefaultDnsQuery(id);\n    }\n\n    @Override\n    protected String protocol() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "00a99114fec5dbf9c36390a6bc4ee6d6024804f040c343d9203975c04da5737f", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "partially-compact-layout", "level": 10, "line_count": 24, "local_path": "layout/partially-compact-layout/I10__netty__TcpDnsQueryContext__1b432d78.java", "order": 10, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 32, "line_break_groups_removed": 12, "line_breaks_removed": 14, "whitespace_characters_removed": 79}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-47f51b432d78-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1005, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1ac5e6bb9b7e-I11", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel channel,\n                       InetSocketAddress nameServerAddr,\n                       DnsQueryContextManager queryContextManager,\n                       DnsQueryLifecycleObserver lifecycleObserver,\n                       int maxPayLoadSize, boolean recursionDesired,\n                       long queryTimeoutMillis,\n                       DnsQuestion question, DnsRecord[] additionals,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise) {\n        super(channel, nameServerAddr, queryContextManager, lifecycleObserver, maxPayLoadSize, recursionDesired,\n                // No retry via TCP.\n                queryTimeoutMillis, question, additionals, promise, null, false);\n    }\n\n    @Override\n    protected DnsQuery newQuery(int id, InetSocketAddress nameServerAddr) {\n        return new DefaultDnsQuery(id);\n    }\n\n    @Override\n    protected String protocol() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 38, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__TcpDnsQueryContext__e6bb9b7e.java", "order": 11, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-1ac5e6bb9b7e-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1006, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-53bdd9a90439-I12", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel channel,\n                       InetSocketAddress nameServerAddr,\n                       DnsQueryContextManager queryContextManager,\n                       DnsQueryLifecycleObserver lifecycleObserver,\n                       int maxPayLoadSize, boolean recursionDesired,\n                       long queryTimeoutMillis,\n                       DnsQuestion question, DnsRecord[] additionals,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise) {\n        super(channel, nameServerAddr, queryContextManager, lifecycleObserver, maxPayLoadSize, recursionDesired,\n                // No retry via TCP.\n                queryTimeoutMillis, question, additionals, promise, null, false);\n    }\n\n    @Override\n    protected DnsQuery newQuery(int id, InetSocketAddress nameServerAddr) {\n        return new DefaultDnsQuery(id);\n    }\n\n    @Override\n    protected String protocol() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 38, "local_path": "data-flow/inline-intermediate-variables/I12__netty__TcpDnsQueryContext__d9a90439.java", "order": 12, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-53bdd9a90439-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1007, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-761bf08344b0-I13", "source": "package io.netty.resolver.dns;\nimport io.netty.channel.AddressedEnvelope;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.handler.codec.dns.DefaultDnsQuery;\nimport io.netty.handler.codec.dns.DnsQuery;\nimport io.netty.handler.codec.dns.DnsQuestion;\nimport io.netty.handler.codec.dns.DnsRecord;\nimport io.netty.handler.codec.dns.DnsResponse;\nimport io.netty.util.concurrent.Future;\nimport io.netty.util.concurrent.Promise;\nimport java.net.InetSocketAddress;\n\nfinal class TcpDnsQueryContext extends DnsQueryContext {\n\n    TcpDnsQueryContext(Channel channel,\n                       InetSocketAddress nameServerAddr,\n                       DnsQueryContextManager queryContextManager,\n                       DnsQueryLifecycleObserver lifecycleObserver,\n                       int maxPayLoadSize, boolean recursionDesired,\n                       long queryTimeoutMillis,\n                       DnsQuestion question, DnsRecord[] additionals,\n                       Promise<AddressedEnvelope<DnsResponse, InetSocketAddress>> promise) {\n        super(channel, nameServerAddr, queryContextManager, lifecycleObserver, maxPayLoadSize, recursionDesired,\n                // No retry via TCP.\n                queryTimeoutMillis, question, additionals, promise, null, false);\n    }\n\n    @Override\n    protected DnsQuery newQuery(int id, InetSocketAddress nameServerAddr) {\n        return new DefaultDnsQuery(id);\n    }\n\n    @Override\n    protected String protocol() {\n        return \"TCP\";\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__TcpDnsQueryContext__aa93a795.java", "base_sample_id": "source-edc50a7a530b52b1", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java", "interference": "lower-for-to-while", "level": 13, "line_count": 38, "local_path": "control-flow/lower-for-to-while/I13__netty__TcpDnsQueryContext__f08344b0.java", "order": 13, "original_content_sha256": "02bea2339b4d7fca0f458a09dd84ffe9f5c7f83c1791c956cf513c8314c55e95", "parent_variant_id": "int-4283aa93a795-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "resolver-dns/src/main/java/io/netty/resolver/dns/TcpDnsQueryContext.java#L31-L55", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "TcpDnsQueryContext", "variant_id": "int-761bf08344b0-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1008, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f5279e4b9232-SRC", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)\n    public void testMultipleConnect(TestInfo testInfo) throws Throwable {\n        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {\n                testMultipleConnect(serverBootstrap, bootstrap);\n            }\n        });\n    }\n\n    public void testMultipleConnect(ServerBootstrap sb, Bootstrap cb) throws Exception {\n        Channel sc = null;\n        Channel cc = null;\n        try {\n            sb.childHandler(new ChannelInboundHandlerAdapter());\n            sc = sb.bind(NetUtil.LOCALHOST, 0).syncUninterruptibly().channel();\n\n            cb.handler(new ChannelInboundHandlerAdapter());\n            cc = cb.register().syncUninterruptibly().channel();\n            cc.connect(sc.localAddress()).syncUninterruptibly();\n            ChannelFuture connectFuture2 = cc.connect(sc.localAddress()).await();\n            assertTrue(connectFuture2.cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (cc != null) {\n                cc.close();\n            }\n            if (sc != null) {\n                sc.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> factories\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> comboFactory\n                : SocketTestPermutation.INSTANCE.socketWithFastOpen()) {\n            EventLoopGroup group = comboFactory.newClientInstance().config().group();\n            if (group instanceof IoEventLoopGroup && ((IoEventLoopGroup) group).isIoType(NioIoHandler.class)) {\n                factories.add(comboFactory);\n            }\n        }\n        return factories;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": null, "level": 0, "line_count": 69, "local_path": "source-original/SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "order": 0, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-f5279e4b9232-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 939, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1231c24e2f0c-I01", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)\n    public void testMultipleConnect(TestInfo testInfo) throws Throwable {\n        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {\n                testMultipleConnect(serverBootstrap, bootstrap);\n            }\n        });\n    }\n\n    public void testMultipleConnect(ServerBootstrap sb, Bootstrap cb) throws Exception {\n        Channel sc = null;\n        Channel cc = null;\n        try {\n            sb.childHandler(new ChannelInboundHandlerAdapter());\n            sc = sb.bind(NetUtil.LOCALHOST, 0).syncUninterruptibly().channel();\n\n            cb.handler(new ChannelInboundHandlerAdapter());\n            cc = cb.register().syncUninterruptibly().channel();\n            cc.connect(sc.localAddress()).syncUninterruptibly();\n            ChannelFuture connectFuture2 = cc.connect(sc.localAddress()).await();\n            assertTrue(connectFuture2.cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (cc != null) {\n                cc.close();\n            }\n            if (sc != null) {\n                sc.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> factories\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> comboFactory\n                : SocketTestPermutation.INSTANCE.socketWithFastOpen()) {\n            EventLoopGroup group = comboFactory.newClientInstance().config().group();\n            if (group instanceof IoEventLoopGroup && ((IoEventLoopGroup) group).isIoType(NioIoHandler.class)) {\n                factories.add(comboFactory);\n            }\n        }\n        return factories;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "remove-comments", "level": 1, "line_count": 69, "local_path": "comments/remove-comments/I01__netty__SocketMultipleConnectTest__c24e2f0c.java", "order": 1, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 0, "comments_removed": 0}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-1231c24e2f0c-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 940, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8d18c9136609-I02", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)\n    public void test(TestInfo test) throws Throwable {\n        run(test, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void run(ServerBootstrap server, Bootstrap boo) throws Throwable {\n                test(server, boo);\n            }\n        });\n    }\n\n    public void test(ServerBootstrap sb, Bootstrap cb) throws Exception {\n        Channel sc = null;\n        Channel cc = null;\n        try {\n            sb.childHandler(new ChannelInboundHandlerAdapter());\n            sc = sb.bind(NetUtil.LOCALHOST, 0).syncUninterruptibly().channel();\n\n            cb.handler(new ChannelInboundHandlerAdapter());\n            cc = cb.register().syncUninterruptibly().channel();\n            cc.connect(sc.localAddress()).syncUninterruptibly();\n            ChannelFuture connect2 = cc.connect(sc.localAddress()).await();\n            assertTrue(connect2.cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (cc != null) {\n                cc.close();\n            }\n            if (sc != null) {\n                sc.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> new2() {\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> fac\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> combo\n                : SocketTestPermutation.INSTANCE.socketWithFastOpen()) {\n            EventLoopGroup gro = combo.newClientInstance().config().group();\n            if (gro instanceof IoEventLoopGroup && ((IoEventLoopGroup) gro).isIoType(NioIoHandler.class)) {\n                fac.add(combo);\n            }\n        }\n        return fac;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "8d82a4a2c5ffd963bbab49ec74406724a09d983b44af5ef85df3328c692d5818", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "shorten-identifiers", "level": 2, "line_count": 69, "local_path": "identifiers/shorten-identifiers/I02__netty__SocketMultipleConnectTest__c9136609.java", "order": 2, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 24, "identifiers_declared": 11, "local_name_collisions_avoided": 1, "method_calls_renamed": 1, "method_declarations_renamed": 3, "method_name_collisions_avoided": 1, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-8d18c9136609-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 941, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-21f50743fef1-I03", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)\n    public void validateAddress(TestInfo nextNode) throws Throwable {\n        add(nextNode, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void add(ServerBootstrap currentSession, Bootstrap backupKey) throws Throwable {\n                validateAddress(currentSession, backupKey);\n            }\n        });\n    }\n\n    public void validateAddress(ServerBootstrap age, Bootstrap key) throws Exception {\n        Channel map = null;\n        Channel size = null;\n        try {\n            age.childHandler(new ChannelInboundHandlerAdapter());\n            map = age.bind(NetUtil.LOCALHOST, 0).syncUninterruptibly().channel();\n\n            key.handler(new ChannelInboundHandlerAdapter());\n            size = key.register().syncUninterruptibly().channel();\n            size.connect(map.localAddress()).syncUninterruptibly();\n            ChannelFuture pendingBalance = size.connect(map.localAddress()).await();\n            assertTrue(pendingBalance.cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (size != null) {\n                size.close();\n            }\n            if (map != null) {\n                map.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> fetchBalance() {\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> localMode\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> backupWindow\n                : SocketTestPermutation.INSTANCE.socketWithFastOpen()) {\n            EventLoopGroup cache = backupWindow.newClientInstance().config().group();\n            if (cache instanceof IoEventLoopGroup && ((IoEventLoopGroup) cache).isIoType(NioIoHandler.class)) {\n                localMode.add(backupWindow);\n            }\n        }\n        return localMode;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a18733985406238ec0cbbf2e081b7dfc74fe9d3aff7bb1bd7144d5fa86d9504f", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "mislead-identifiers", "level": 3, "line_count": 69, "local_path": "identifiers/mislead-identifiers/I03__netty__SocketMultipleConnectTest__0743fef1.java", "order": 3, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 24, "identifiers_declared": 11, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 4, "local_exact_length_matches": 6, "local_random_pool_selections": 11, "local_total_length_difference": 6, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 2, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 2, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 4}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-21f50743fef1-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 942, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0363dbc02528-I04", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)\n    public void a(TestInfo a) throws Throwable {\n        b(a, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void b(ServerBootstrap b, Bootstrap c) throws Throwable {\n                a(b, c);\n            }\n        });\n    }\n\n    public void a(ServerBootstrap d, Bootstrap e) throws Exception {\n        Channel f = null;\n        Channel g = null;\n        try {\n            d.childHandler(new ChannelInboundHandlerAdapter());\n            f = d.bind(NetUtil.LOCALHOST, 0).syncUninterruptibly().channel();\n\n            e.handler(new ChannelInboundHandlerAdapter());\n            g = e.register().syncUninterruptibly().channel();\n            g.connect(f.localAddress()).syncUninterruptibly();\n            ChannelFuture h = g.connect(f.localAddress()).await();\n            assertTrue(h.cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (g != null) {\n                g.close();\n            }\n            if (f != null) {\n                f.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> c() {\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> i\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> j\n                : SocketTestPermutation.INSTANCE.socketWithFastOpen()) {\n            EventLoopGroup k = j.newClientInstance().config().group();\n            if (k instanceof IoEventLoopGroup && ((IoEventLoopGroup) k).isIoType(NioIoHandler.class)) {\n                i.add(j);\n            }\n        }\n        return i;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "05e8138efd263807caa0d167983ee386e7f0b09df60b1195c2b6ad67c8149b41", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "garble-identifiers", "level": 4, "line_count": 69, "local_path": "identifiers/garble-identifiers/I04__netty__SocketMultipleConnectTest__dbc02528.java", "order": 4, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 24, "identifiers_declared": 11, "local_name_collisions_avoided": 0, "method_calls_renamed": 2, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-0363dbc02528-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 943, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4cea351e5615-I05", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 0x7530, unit = TimeUnit.MILLISECONDS)\n    public void testMultipleConnect(TestInfo testInfo) throws Throwable {\n        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {\n                testMultipleConnect(serverBootstrap, bootstrap);\n            }\n        });\n    }\n\n    public void testMultipleConnect(ServerBootstrap sb, Bootstrap cb) throws Exception {\n        Channel sc = null;\n        Channel cc = null;\n        try {\n            sb.childHandler(new ChannelInboundHandlerAdapter());\n            sc = sb.bind(NetUtil.LOCALHOST, 0x0).syncUninterruptibly().channel();\n\n            cb.handler(new ChannelInboundHandlerAdapter());\n            cc = cb.register().syncUninterruptibly().channel();\n            cc.connect(sc.localAddress()).syncUninterruptibly();\n            ChannelFuture connectFuture2 = cc.connect(sc.localAddress()).await();\n            assertTrue(connectFuture2.cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (cc != null) {\n                cc.close();\n            }\n            if (sc != null) {\n                sc.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> factories\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> comboFactory\n                : SocketTestPermutation.INSTANCE.socketWithFastOpen()) {\n            EventLoopGroup group = comboFactory.newClientInstance().config().group();\n            if (group instanceof IoEventLoopGroup && ((IoEventLoopGroup) group).isIoType(NioIoHandler.class)) {\n                factories.add(comboFactory);\n            }\n        }\n        return factories;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "64dcd01f542515bb9d47789f6768ed90fff6985a1886d84c0c1b80bb7dfaf6bd", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "encode-integer-literals", "level": 5, "line_count": 69, "local_path": "expressions/encode-integer-literals/I05__netty__SocketMultipleConnectTest__351e5615.java", "order": 5, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 2}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-4cea351e5615-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 944, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ad3eb6bc6e6f-I06", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)\n    public void testMultipleConnect(TestInfo testInfo) throws Throwable {\n        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {\n                testMultipleConnect(serverBootstrap, bootstrap);\n            }\n        });\n    }\n\n    public void testMultipleConnect(ServerBootstrap sb, Bootstrap cb) throws Exception {\n        Channel sc = null;\n        Channel cc = null;\n        try {\n            sb.childHandler(new ChannelInboundHandlerAdapter());\n            sc = sb.bind(NetUtil.LOCALHOST, 0).syncUninterruptibly().channel();\n\n            cb.handler(new ChannelInboundHandlerAdapter());\n            cc = cb.register().syncUninterruptibly().channel();\n            cc.connect(sc.localAddress()).syncUninterruptibly();\n            ChannelFuture connectFuture2 = cc.connect(sc.localAddress()).await();\n            assertTrue(connectFuture2.cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (!((cc != null))) {} else {\n                cc.close();\n            }\n            if (!((sc != null))) {} else {\n                sc.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> factories\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> comboFactory\n                : SocketTestPermutation.INSTANCE.socketWithFastOpen()) {\n            EventLoopGroup group = comboFactory.newClientInstance().config().group();\n            if (!((group instanceof IoEventLoopGroup && ((IoEventLoopGroup) group).isIoType(NioIoHandler.class)))) {} else {\n                factories.add(comboFactory);\n            }\n        }\n        return factories;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "ef2afda70f011890e71a84e3bf5991d7fa26ba80eed7d383e8e9b98af3634544", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "invert-conditions", "level": 6, "line_count": 69, "local_path": "expressions/invert-conditions/I06__netty__SocketMultipleConnectTest__b6bc6e6f.java", "order": 6, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 3}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-ad3eb6bc6e6f-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 945, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3fa864eb91b0-I07", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)\n    public void testMultipleConnect(TestInfo testInfo) throws Throwable {\nif (((0x6410 ^ 0x6410) != 0)) { throw new AssertionError(); }\n\n        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {\nif (((0x6F6B ^ 0x6F6B) != 0)) { throw new AssertionError(); }\n\n                testMultipleConnect(serverBootstrap, bootstrap);\n            }\n        });\n    }\n\n    public void testMultipleConnect(ServerBootstrap sb, Bootstrap cb) throws Exception {\nif (((0xD979 ^ 0xD979) != 0)) { throw new AssertionError(); }\n\n        Channel sc = null;\n        Channel cc = null;\n        try {\n            sb.childHandler(new ChannelInboundHandlerAdapter());\n            sc = sb.bind(NetUtil.LOCALHOST, 0).syncUninterruptibly().channel();\n\n            cb.handler(new ChannelInboundHandlerAdapter());\n            cc = cb.register().syncUninterruptibly().channel();\n            cc.connect(sc.localAddress()).syncUninterruptibly();\n            ChannelFuture connectFuture2 = cc.connect(sc.localAddress()).await();\n            assertTrue(connectFuture2.cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (cc != null) {\n                cc.close();\n            }\n            if (sc != null) {\n                sc.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {\nif (((0x829F ^ 0x829F) != 0)) { throw new AssertionError(); }\n\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> factories\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> comboFactory\n                : SocketTestPermutation.INSTANCE.socketWithFastOpen()) {\n            EventLoopGroup group = comboFactory.newClientInstance().config().group();\n            if (group instanceof IoEventLoopGroup && ((IoEventLoopGroup) group).isIoType(NioIoHandler.class)) {\n                factories.add(comboFactory);\n            }\n        }\n        return factories;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "0d199c7748e07eec2270a096d79218f3b3d616c3a6bb75d2452817dff2807a87", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "insert-dead-branches", "level": 7, "line_count": 77, "local_path": "code-injection/insert-dead-branches/I07__netty__SocketMultipleConnectTest__64eb91b0.java", "order": 7, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-3fa864eb91b0-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 946, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c09ad0884ffd-I08", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)\n    public void testMultipleConnect(TestInfo testInfo) throws Throwable {\n{\n  boolean featureEnabled = false;\n  for (int toggleCount = 0; toggleCount < 3; toggleCount++) {\n    featureEnabled = !featureEnabled;\n  }\n}\n\n        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {\n                testMultipleConnect(serverBootstrap, bootstrap);\n            }\n        });\n    }\n\n    public void testMultipleConnect(ServerBootstrap sb, Bootstrap cb) throws Exception {\n        Channel sc = null;\n        Channel cc = null;\n        try {\n            sb.childHandler(new ChannelInboundHandlerAdapter());\n            sc = sb.bind(NetUtil.LOCALHOST, 0).syncUninterruptibly().channel();\n\n            cb.handler(new ChannelInboundHandlerAdapter());\n            cc = cb.register().syncUninterruptibly().channel();\n            cc.connect(sc.localAddress()).syncUninterruptibly();\n            ChannelFuture connectFuture2 = cc.connect(sc.localAddress()).await();\n            assertTrue(connectFuture2.cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (cc != null) {\n                cc.close();\n            }\n            if (sc != null) {\n                sc.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> factories\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> comboFactory\n                : SocketTestPermutation.INSTANCE.socketWithFastOpen()) {\n            EventLoopGroup group = comboFactory.newClientInstance().config().group();\n            if (group instanceof IoEventLoopGroup && ((IoEventLoopGroup) group).isIoType(NioIoHandler.class)) {\n                factories.add(comboFactory);\n            }\n        }\n        return factories;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "c790f8b1d0860ad183e22ba560c532ecd72b42b17d050f4000702d5e0ed7f32d", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 76, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__SocketMultipleConnectTest__d0884ffd.java", "order": 8, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 7}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-c09ad0884ffd-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 947, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ae862f5dbd39-I09", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)\n    public void testMultipleConnect(TestInfo testInfo) throws Throwable {\n        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {\n                testMultipleConnect(serverBootstrap, bootstrap);\n            }\n        });\n    }\n\n    public void testMultipleConnect(ServerBootstrap sb, Bootstrap cb) throws Exception {\n        Channel sc = null;\n        Channel cc = null;\n        try {\n            sb.childHandler(new ChannelInboundHandlerAdapter());\n            sc = sb.bind(NetUtil.LOCALHOST, 0).syncUninterruptibly().channel();\n\n            cb.handler(new ChannelInboundHandlerAdapter());\n            cc = cb.register().syncUninterruptibly().channel();\n            cc.connect(sc.localAddress()).syncUninterruptibly();\n            ChannelFuture connectFuture2 = cc.connect(sc.localAddress()).await();\n            assertTrue(connectFuture2.cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (cc != null) {\n                cc.close();\n            }\n            if (sc != null) {\n                sc.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {\n{int lI0O_4f6064d3=0xB6F1^0xB6F1;if(lI0O_4f6064d3!=0){if(((lI0O_4f6064d3|1)&1)==0){lI0O_4f6064d3++;}else{lI0O_4f6064d3--;}}}\n\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> factories\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> comboFactory\n                : SocketTestPermutation.INSTANCE.socketWithFastOpen()) {\n            EventLoopGroup group = comboFactory.newClientInstance().config().group();\n            if (group instanceof IoEventLoopGroup && ((IoEventLoopGroup) group).isIoType(NioIoHandler.class)) {\n                factories.add(comboFactory);\n            }\n        }\n        return factories;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "af29886f6e2ce250a87c4fc78e98f2b7adfb4a174329bf30a0ea4d811286e011", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 71, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__SocketMultipleConnectTest__2f5dbd39.java", "order": 9, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 5}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-ae862f5dbd39-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 948, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c64aaaa69cff-I10", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap; import io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; import org.junit.jupiter.api.Timeout; import java.nio.channels.AlreadyConnectedException; import java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS) public void testMultipleConnect(TestInfo testInfo) throws Throwable {\n        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() { @Override\n            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable { testMultipleConnect(serverBootstrap, bootstrap);\n            }\n        }); } public void testMultipleConnect(ServerBootstrap sb, Bootstrap cb) throws Exception {\n        Channel sc = null;\n        Channel cc = null; try {\n            sb.childHandler(new ChannelInboundHandlerAdapter()); sc = sb.bind(NetUtil.LOCALHOST, 0).syncUninterruptibly().channel();\n\n            cb.handler(new ChannelInboundHandlerAdapter());\n            cc = cb.register().syncUninterruptibly().channel();\n            cc.connect(sc.localAddress()).syncUninterruptibly();\n            ChannelFuture connectFuture2 = cc.connect(sc.localAddress()).await();\n            assertTrue(connectFuture2.cause() instanceof AlreadyConnectedException); } finally {\n            if (cc != null) {\n                cc.close();\n            }\n            if (sc != null) {\n                sc.close(); }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() { List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> factories = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> comboFactory : SocketTestPermutation.INSTANCE.socketWithFastOpen()) { EventLoopGroup group = comboFactory.newClientInstance().config().group();\n            if (group instanceof IoEventLoopGroup && ((IoEventLoopGroup) group).isIoType(NioIoHandler.class)) {\n                factories.add(comboFactory); } } return factories; }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "eda9b864b41cd09c69f53f59d0278ff5e802cbf19ab143a870e6afdcb94145b6", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "partially-compact-layout", "level": 10, "line_count": 43, "local_path": "layout/partially-compact-layout/I10__netty__SocketMultipleConnectTest__aaa69cff.java", "order": 10, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 63, "line_break_groups_removed": 25, "line_breaks_removed": 26, "whitespace_characters_removed": 169}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-c64aaaa69cff-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 949, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7af3fa38f519-I11", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)\n    public void testMultipleConnect(TestInfo testInfo) throws Throwable {\n        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {\n                testMultipleConnect(serverBootstrap, bootstrap);\n            }\n        });\n    }\n\n    public void testMultipleConnect(ServerBootstrap sb, Bootstrap cb) throws Exception {\n        Channel sc = null;\n        Channel cc = null;\n        try {\n            sb.childHandler(new ChannelInboundHandlerAdapter());\n            final int a = 1;\n            final int b = -1;\n            sc = sb.bind(NetUtil.LOCALHOST, (a + b)).syncUninterruptibly().channel();\n\n            cb.handler(new ChannelInboundHandlerAdapter());\n            cc = cb.register().syncUninterruptibly().channel();\n            cc.connect(sc.localAddress()).syncUninterruptibly();\n            ChannelFuture connectFuture2 = cc.connect(sc.localAddress()).await();\n            assertTrue(connectFuture2.cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (cc != null) {\n                cc.close();\n            }\n            if (sc != null) {\n                sc.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> factories\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> comboFactory\n                : SocketTestPermutation.INSTANCE.socketWithFastOpen()) {\n            EventLoopGroup group = comboFactory.newClientInstance().config().group();\n            if (group instanceof IoEventLoopGroup && ((IoEventLoopGroup) group).isIoType(NioIoHandler.class)) {\n                factories.add(comboFactory);\n            }\n        }\n        return factories;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3e392a7c9daf4bf0fb8df7312a90d23cfb89ea4de6917f5f2f248215933d6d8b", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 71, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__SocketMultipleConnectTest__fa38f519.java", "order": 11, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 1, "intermediate_variables_introduced": 2, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-7af3fa38f519-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 950, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3cd3f649fd95-I12", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)\n    public void testMultipleConnect(TestInfo testInfo) throws Throwable {\n        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {\n                testMultipleConnect(serverBootstrap, bootstrap);\n            }\n        });\n    }\n\n    public void testMultipleConnect(ServerBootstrap sb, Bootstrap cb) throws Exception {\n        Channel sc = null;\n        Channel cc = null;\n        try {\n            sb.childHandler(new ChannelInboundHandlerAdapter());\n            sc = sb.bind(NetUtil.LOCALHOST, 0).syncUninterruptibly().channel();\n\n            cb.handler(new ChannelInboundHandlerAdapter());\n            cc = cb.register().syncUninterruptibly().channel();\n            cc.connect(sc.localAddress()).syncUninterruptibly();\n            \n            assertTrue((cc.connect(sc.localAddress()).await()).cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (cc != null) {\n                cc.close();\n            }\n            if (sc != null) {\n                sc.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> factories\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        for (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> comboFactory\n                : SocketTestPermutation.INSTANCE.socketWithFastOpen()) {\n            EventLoopGroup group = comboFactory.newClientInstance().config().group();\n            if (group instanceof IoEventLoopGroup && ((IoEventLoopGroup) group).isIoType(NioIoHandler.class)) {\n                factories.add(comboFactory);\n            }\n        }\n        return factories;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "9d5bd24997698ed907c274f1c4dd26a1b440fc58c0d5f48c822b99bb51d8aa05", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 69, "local_path": "data-flow/inline-intermediate-variables/I12__netty__SocketMultipleConnectTest__f649fd95.java", "order": 12, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-3cd3f649fd95-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 951, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ec59393a0297-I13", "source": "package io.netty.testsuite.transport.socket;\nimport io.netty.bootstrap.Bootstrap;\nimport io.netty.bootstrap.ServerBootstrap;\nimport io.netty.channel.Channel;\nimport io.netty.channel.ChannelFuture;\nimport io.netty.channel.ChannelInboundHandlerAdapter;\nimport io.netty.channel.EventLoopGroup;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.nio.NioIoHandler;\nimport io.netty.testsuite.transport.TestsuitePermutation;\nimport io.netty.util.NetUtil;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.Timeout;\nimport java.nio.channels.AlreadyConnectedException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.TimeUnit;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\npublic class SocketMultipleConnectTest extends AbstractSocketTest {\n\n    @Test\n    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)\n    public void testMultipleConnect(TestInfo testInfo) throws Throwable {\n        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {\n            @Override\n            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {\n                testMultipleConnect(serverBootstrap, bootstrap);\n            }\n        });\n    }\n\n    public void testMultipleConnect(ServerBootstrap sb, Bootstrap cb) throws Exception {\n        Channel sc = null;\n        Channel cc = null;\n        try {\n            sb.childHandler(new ChannelInboundHandlerAdapter());\n            sc = sb.bind(NetUtil.LOCALHOST, 0).syncUninterruptibly().channel();\n\n            cb.handler(new ChannelInboundHandlerAdapter());\n            cc = cb.register().syncUninterruptibly().channel();\n            cc.connect(sc.localAddress()).syncUninterruptibly();\n            ChannelFuture connectFuture2 = cc.connect(sc.localAddress()).await();\n            assertTrue(connectFuture2.cause() instanceof AlreadyConnectedException);\n        } finally {\n            if (cc != null) {\n                cc.close();\n            }\n            if (sc != null) {\n                sc.close();\n            }\n        }\n    }\n\n    @Override\n    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {\n        List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> factories\n                = new ArrayList<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>>();\n        {\n          java.util.Iterator<?> loopIterator = (SocketTestPermutation.INSTANCE.socketWithFastOpen()).iterator();\n          while (loopIterator.hasNext()) {\n            TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap> comboFactory = (TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>) loopIterator.next();\n            EventLoopGroup group = comboFactory.newClientInstance().config().group();\n            if (group instanceof IoEventLoopGroup && ((IoEventLoopGroup) group).isIoType(NioIoHandler.class)) {\n                factories.add(comboFactory);\n            }\n          }\n        }\n        return factories;\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__SocketMultipleConnectTest__9e4b9232.java", "base_sample_id": "source-bd840dcf24f4828a", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "f5771abed6e1987b4326299c85a183606714f1b6ae47692dbd891aa78baa3d35", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java", "interference": "lower-for-to-while", "level": 13, "line_count": 72, "local_path": "control-flow/lower-for-to-while/I13__netty__SocketMultipleConnectTest__393a0297.java", "order": 13, "original_content_sha256": "1b1e5de0d9cdd20fbdffdf4dbf4bed95e120154deb1a74327f7111d9ff91d5ba", "parent_variant_id": "int-f5279e4b9232-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketMultipleConnectTest.java#L39-L87", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 1, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "SocketMultipleConnectTest", "variant_id": "int-ec59393a0297-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 952, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1d82d097dc9c-SRC", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue ioUringSubmissionQueue,\n               CompletionQueue ioUringCompletionQueue, int features) {\n        this.ioUringSubmissionQueue = ioUringSubmissionQueue;\n        this.ioUringCompletionQueue = ioUringCompletionQueue;\n        this.features = features;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void enable() {\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(fd());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int fd() {\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int features() {\n        return features;\n    }\n\n    SubmissionQueue ioUringSubmissionQueue() {\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue ioUringCompletionQueue() {\n        return this.ioUringCompletionQueue;\n    }\n\n    void close() {\n        if (closed) {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": null, "level": 0, "line_count": 61, "local_path": "source-original/SRC__netty__RingBuffer__d097dc9c.java", "order": 0, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-1d82d097dc9c-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 869, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-28c54cadc982-I01", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue ioUringSubmissionQueue,\n               CompletionQueue ioUringCompletionQueue, int features) {\n        this.ioUringSubmissionQueue = ioUringSubmissionQueue;\n        this.ioUringCompletionQueue = ioUringCompletionQueue;\n        this.features = features;\n    }\n\n    \n\n\n\n    void enable() {\n         \n        Native.ioUringRegisterEnableRings(fd());\n         \n         \n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int fd() {\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int features() {\n        return features;\n    }\n\n    SubmissionQueue ioUringSubmissionQueue() {\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue ioUringCompletionQueue() {\n        return this.ioUringCompletionQueue;\n    }\n\n    void close() {\n        if (closed) {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "268dec5e69fe6e157fe80ccc60df5bbcac35b4754008c65e194819d500f868c4", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "remove-comments", "level": 1, "line_count": 61, "local_path": "comments/remove-comments/I01__netty__RingBuffer__4cadc982.java", "order": 1, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 381, "comments_removed": 4}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-28c54cadc982-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 870, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f6df47b29fa0-I02", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue io2,\n               CompletionQueue io3, int fea) {\n        this.ioUringSubmissionQueue = io2;\n        this.ioUringCompletionQueue = io3;\n        this.features = fea;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void ena() {\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(fd());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int fd() {\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int fea() {\n        return features;\n    }\n\n    SubmissionQueue io() {\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue io2() {\n        return this.ioUringCompletionQueue;\n    }\n\n    void clo() {\n        if (closed) {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "63760b5cff57dac36ac52743aa6ea78f2043458166b7baf7c87518895714283c", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "shorten-identifiers", "level": 2, "line_count": 61, "local_path": "identifiers/shorten-identifiers/I02__netty__RingBuffer__47b29fa0.java", "order": 2, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 3, "identifiers_declared": 3, "local_name_collisions_avoided": 2, "method_calls_renamed": 0, "method_declarations_renamed": 5, "method_name_collisions_avoided": 1, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-f6df47b29fa0-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 871, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2f5efef78676-I03", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue defaultRequest,\n               CompletionQueue pendingAccount, int shipment) {\n        this.ioUringSubmissionQueue = defaultRequest;\n        this.ioUringCompletionQueue = pendingAccount;\n        this.features = shipment;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void render() {\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(add());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int add() {\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int dispatch() {\n        return features;\n    }\n\n    SubmissionQueue validateMessage() {\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue validateAccount() {\n        return this.ioUringCompletionQueue;\n    }\n\n    void apply() {\n        if (closed) {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "2ea1583cf227a9610327e161af0cddbd1cbda0c4e683db5452d23f98bde633b1", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "mislead-identifiers", "level": 3, "line_count": 61, "local_path": "identifiers/mislead-identifiers/I03__netty__RingBuffer__fef78676.java", "order": 3, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 3, "identifiers_declared": 3, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 1, "local_random_pool_selections": 3, "local_total_length_difference": 16, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 1, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 6, "method_exact_length_matches": 3, "method_name_groups": 6, "method_random_pool_selections": 6, "method_total_length_difference": 15}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-2f5efef78676-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 872, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-08831481cfa6-I04", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue a,\n               CompletionQueue b, int c) {\n        this.ioUringSubmissionQueue = a;\n        this.ioUringCompletionQueue = b;\n        this.features = c;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void a() {\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(b());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int b() {\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int c() {\n        return features;\n    }\n\n    SubmissionQueue d() {\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue e() {\n        return this.ioUringCompletionQueue;\n    }\n\n    void f() {\n        if (closed) {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7e4418147fd2c2e96a6bb25efd6c8e1c0f392f08925571cb25b64f5e3c89fcd5", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "garble-identifiers", "level": 4, "line_count": 61, "local_path": "identifiers/garble-identifiers/I04__netty__RingBuffer__1481cfa6.java", "order": 4, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 3, "identifiers_declared": 3, "local_name_collisions_avoided": 0, "method_calls_renamed": 1, "method_declarations_renamed": 6, "method_name_collisions_avoided": 0, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-08831481cfa6-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 873, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1c92b3032720-I05", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue ioUringSubmissionQueue,\n               CompletionQueue ioUringCompletionQueue, int features) {\n        this.ioUringSubmissionQueue = ioUringSubmissionQueue;\n        this.ioUringCompletionQueue = ioUringCompletionQueue;\n        this.features = features;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void enable() {\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(fd());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int fd() {\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int features() {\n        return features;\n    }\n\n    SubmissionQueue ioUringSubmissionQueue() {\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue ioUringCompletionQueue() {\n        return this.ioUringCompletionQueue;\n    }\n\n    void close() {\n        if (closed) {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "encode-integer-literals", "level": 5, "line_count": 61, "local_path": "expressions/encode-integer-literals/I05__netty__RingBuffer__b3032720.java", "order": 5, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-1c92b3032720-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 874, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-73b91471e4ef-I06", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue ioUringSubmissionQueue,\n               CompletionQueue ioUringCompletionQueue, int features) {\n        this.ioUringSubmissionQueue = ioUringSubmissionQueue;\n        this.ioUringCompletionQueue = ioUringCompletionQueue;\n        this.features = features;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void enable() {\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(fd());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int fd() {\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int features() {\n        return features;\n    }\n\n    SubmissionQueue ioUringSubmissionQueue() {\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue ioUringCompletionQueue() {\n        return this.ioUringCompletionQueue;\n    }\n\n    void close() {\n        if (!((closed))) {} else {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "f7eb0e560d48cccb901149b7562b002f003110b13ec38ae225b00a80b3cd4814", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "invert-conditions", "level": 6, "line_count": 61, "local_path": "expressions/invert-conditions/I06__netty__RingBuffer__1471e4ef.java", "order": 6, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-73b91471e4ef-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 875, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a67cc6a654d7-I07", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue ioUringSubmissionQueue,\n               CompletionQueue ioUringCompletionQueue, int features) {\nif (((0x9EC1 ^ 0x9EC1) != 0)) { throw new AssertionError(); }\n\n        this.ioUringSubmissionQueue = ioUringSubmissionQueue;\n        this.ioUringCompletionQueue = ioUringCompletionQueue;\n        this.features = features;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void enable() {\nif (((0xB236 ^ 0xB236) != 0)) { throw new AssertionError(); }\n\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(fd());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int fd() {\nif (((0xF499 ^ 0xF499) != 0)) { throw new AssertionError(); }\n\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int features() {\nif (((0x94C3 ^ 0x94C3) != 0)) { throw new AssertionError(); }\n\n        return features;\n    }\n\n    SubmissionQueue ioUringSubmissionQueue() {\nif (((0xAF50 ^ 0xAF50) != 0)) { throw new AssertionError(); }\n\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue ioUringCompletionQueue() {\nif (((0x6A3D ^ 0x6A3D) != 0)) { throw new AssertionError(); }\n\n        return this.ioUringCompletionQueue;\n    }\n\n    void close() {\nif (((0xE893 ^ 0xE893) != 0)) { throw new AssertionError(); }\n\n        if (closed) {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "29460f3fc0d729701713d77b90d0bc49a5a301145581af4b50e867038922bcd9", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "insert-dead-branches", "level": 7, "line_count": 75, "local_path": "code-injection/insert-dead-branches/I07__netty__RingBuffer__c6a654d7.java", "order": 7, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 7}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-a67cc6a654d7-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 876, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-56624a4a9bac-I08", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue ioUringSubmissionQueue,\n               CompletionQueue ioUringCompletionQueue, int features) {\n        this.ioUringSubmissionQueue = ioUringSubmissionQueue;\n        this.ioUringCompletionQueue = ioUringCompletionQueue;\n        this.features = features;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void enable() {\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(fd());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int fd() {\n{\n  int startingPosition = 2;\n  int endingPosition = 9;\n  int travelDistance = endingPosition - startingPosition;\n  if (travelDistance < 0) {\n    travelDistance = -travelDistance;\n  }\n}\n\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int features() {\n        return features;\n    }\n\n    SubmissionQueue ioUringSubmissionQueue() {\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue ioUringCompletionQueue() {\n        return this.ioUringCompletionQueue;\n    }\n\n    void close() {\n        if (closed) {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "13e9fa44203b840a6039b470b8544c3781e9f15757af8185ccfd94b71a477a7a", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 70, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__RingBuffer__4a4a9bac.java", "order": 8, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 9}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-56624a4a9bac-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 877, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5b63f25aae3a-I09", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue ioUringSubmissionQueue,\n               CompletionQueue ioUringCompletionQueue, int features) {\n{int lI0O_ccbc5d5c=0x18F3;boolean lI0O_d303ed5d=true;do{lI0O_ccbc5d5c^=0x18F3;lI0O_d303ed5d=false;}while(lI0O_d303ed5d);}\n\n        this.ioUringSubmissionQueue = ioUringSubmissionQueue;\n        this.ioUringCompletionQueue = ioUringCompletionQueue;\n        this.features = features;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void enable() {\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(fd());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int fd() {\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int features() {\n        return features;\n    }\n\n    SubmissionQueue ioUringSubmissionQueue() {\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue ioUringCompletionQueue() {\n        return this.ioUringCompletionQueue;\n    }\n\n    void close() {\n        if (closed) {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "57dd0d1bf85db561e92693647277aa65dcb75110d4810e6eca64cf4b5a058807", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 63, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__RingBuffer__f25aae3a.java", "order": 9, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 7}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-5b63f25aae3a-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 878, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-959d682a999f-I10", "source": "package io.netty.channel.uring; final class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue; private final CompletionQueue ioUringCompletionQueue; private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue ioUringSubmissionQueue, CompletionQueue ioUringCompletionQueue, int features) { this.ioUringSubmissionQueue = ioUringSubmissionQueue;\n        this.ioUringCompletionQueue = ioUringCompletionQueue; this.features = features;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void enable() {\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(fd());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int fd() {\n        return ioUringCompletionQueue.ringFd;\n    } int features() {\n        return features;\n    } SubmissionQueue ioUringSubmissionQueue() { return this.ioUringSubmissionQueue; } CompletionQueue ioUringCompletionQueue() { return this.ioUringCompletionQueue;\n    }\n\n    void close() {\n        if (closed) { return;\n        }\n        closed = true; ioUringSubmissionQueue.close(); ioUringCompletionQueue.close(); Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress, ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd, ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "f6ad5065a8515fb971c8ca128fef0b6d8bad18fe5f772a02d2dcc2a3a3da03e5", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "partially-compact-layout", "level": 10, "line_count": 39, "local_path": "layout/partially-compact-layout/I10__netty__RingBuffer__682a999f.java", "order": 10, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 46, "line_break_groups_removed": 18, "line_breaks_removed": 22, "whitespace_characters_removed": 143}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-959d682a999f-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 879, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-41bafec65ffc-I11", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue ioUringSubmissionQueue,\n               CompletionQueue ioUringCompletionQueue, int features) {\n        this.ioUringSubmissionQueue = ioUringSubmissionQueue;\n        this.ioUringCompletionQueue = ioUringCompletionQueue;\n        this.features = features;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void enable() {\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(fd());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int fd() {\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int features() {\n        return features;\n    }\n\n    SubmissionQueue ioUringSubmissionQueue() {\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue ioUringCompletionQueue() {\n        return this.ioUringCompletionQueue;\n    }\n\n    void close() {\n        if (closed) {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 61, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__RingBuffer__fec65ffc.java", "order": 11, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-41bafec65ffc-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 880, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ad63efb6e2ac-I12", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue ioUringSubmissionQueue,\n               CompletionQueue ioUringCompletionQueue, int features) {\n        this.ioUringSubmissionQueue = ioUringSubmissionQueue;\n        this.ioUringCompletionQueue = ioUringCompletionQueue;\n        this.features = features;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void enable() {\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(fd());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int fd() {\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int features() {\n        return features;\n    }\n\n    SubmissionQueue ioUringSubmissionQueue() {\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue ioUringCompletionQueue() {\n        return this.ioUringCompletionQueue;\n    }\n\n    void close() {\n        if (closed) {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 61, "local_path": "data-flow/inline-intermediate-variables/I12__netty__RingBuffer__efb6e2ac.java", "order": 12, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-ad63efb6e2ac-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 881, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3ccfeb9bbaaa-I13", "source": "package io.netty.channel.uring;\n\nfinal class RingBuffer {\n    private final SubmissionQueue ioUringSubmissionQueue;\n    private final CompletionQueue ioUringCompletionQueue;\n    private final int features;\n    private boolean closed;\n\n    RingBuffer(SubmissionQueue ioUringSubmissionQueue,\n               CompletionQueue ioUringCompletionQueue, int features) {\n        this.ioUringSubmissionQueue = ioUringSubmissionQueue;\n        this.ioUringCompletionQueue = ioUringCompletionQueue;\n        this.features = features;\n    }\n\n    /**\n     * Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and\n     * {@link SubmissionQueue#submitAndWait()}.\n     */\n    void enable() {\n        // We create our ring in disabled mode and so need to enable it first.\n        Native.ioUringRegisterEnableRings(fd());\n        // Now also register the ring filedescriptor itself. This needs to happen in the same thread\n        // that will also call the io_uring_enter(...)\n        ioUringSubmissionQueue.tryRegisterRingFd();\n    }\n\n    int fd() {\n        return ioUringCompletionQueue.ringFd;\n    }\n\n    int features() {\n        return features;\n    }\n\n    SubmissionQueue ioUringSubmissionQueue() {\n        return this.ioUringSubmissionQueue;\n    }\n\n    CompletionQueue ioUringCompletionQueue() {\n        return this.ioUringCompletionQueue;\n    }\n\n    void close() {\n        if (closed) {\n            return;\n        }\n        closed = true;\n        ioUringSubmissionQueue.close();\n        ioUringCompletionQueue.close();\n        Native.ioUringExit(\n                ioUringSubmissionQueue.submissionQueueArrayAddress(),\n                ioUringSubmissionQueue.ringEntries,\n                ioUringSubmissionQueue.ringAddress,\n                ioUringSubmissionQueue.ringSize,\n                ioUringCompletionQueue.ringAddress,\n                ioUringCompletionQueue.ringSize,\n                ioUringSubmissionQueue.ringFd,\n                ioUringSubmissionQueue.enterRingFd);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__RingBuffer__d097dc9c.java", "base_sample_id": "source-ac3a8cc2554d0b56", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java", "interference": "lower-for-to-while", "level": 13, "line_count": 61, "local_path": "control-flow/lower-for-to-while/I13__netty__RingBuffer__eb9bbaaa.java", "order": 13, "original_content_sha256": "be48a6bbeda3e7a51712ea31a4f7cfc31febabebbddc09d55bc99f55888a9878", "parent_variant_id": "int-1d82d097dc9c-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java#L19-L77", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "RingBuffer", "variant_id": "int-3ccfeb9bbaaa-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 882, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fd214021ac03-SRC", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -2214806025529435136L;\n\n    private StacklessClosedChannelException() { }\n\n    @Override\n    public Throwable fillInStackTrace() {\n        // Suppress a warning since this method doesn't need synchronization\n        return this;\n    }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException newInstance(Class<?> clazz, String method) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), clazz, method);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": null, "level": 0, "line_count": 28, "local_path": "source-original/SRC__netty__StacklessClosedChannelException__4021ac03.java", "order": 0, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-fd214021ac03-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 967, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9fc1d92cbaec-I01", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n\n\n\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -2214806025529435136L;\n\n    private StacklessClosedChannelException() { }\n\n    @Override\n    public Throwable fillInStackTrace() {\n         \n        return this;\n    }\n\n    \n\n\n    public static StacklessClosedChannelException newInstance(Class<?> clazz, String method) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), clazz, method);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "abe4688985759be9bd863fd43650722f4431314005ee8442c6908539b1a1fd00", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "remove-comments", "level": 1, "line_count": 28, "local_path": "comments/remove-comments/I01__netty__StacklessClosedChannelException__d92cbaec.java", "order": 1, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 280, "comments_removed": 3}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-9fc1d92cbaec-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 968, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-09ff01e069b8-I02", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -2214806025529435136L;\n\n    private StacklessClosedChannelException() { }\n\n    @Override\n    public Throwable fill() {\n        // Suppress a warning since this method doesn't need synchronization\n        return this;\n    }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException new2(Class<?> cla, String met) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), cla, met);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a1c8834c0c19c4b363c2f3f6c7f70d11a0e43eea2c3556e7f2d37aeab5e5b5a1", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "shorten-identifiers", "level": 2, "line_count": 28, "local_path": "identifiers/shorten-identifiers/I02__netty__StacklessClosedChannelException__01e069b8.java", "order": 2, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 2, "identifiers_declared": 2, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 1, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-09ff01e069b8-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 969, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-914b7d7b6678-I03", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -2214806025529435136L;\n\n    private StacklessClosedChannelException() { }\n\n    @Override\n    public Throwable validateSession() {\n        // Suppress a warning since this method doesn't need synchronization\n        return this;\n    }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException readSession(Class<?> count, String buffer) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), count, buffer);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "1c0cbd79df725eb3505ec22a3acbffe96016a1ecf18b4b1c03417f4fd7f7145d", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "mislead-identifiers", "level": 3, "line_count": 28, "local_path": "identifiers/mislead-identifiers/I03__netty__StacklessClosedChannelException__7d7b6678.java", "order": 3, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 2, "identifiers_declared": 2, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 2, "local_random_pool_selections": 2, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 1, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 1}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-914b7d7b6678-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 970, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-89dc7b6e30a8-I04", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -2214806025529435136L;\n\n    private StacklessClosedChannelException() { }\n\n    @Override\n    public Throwable a() {\n        // Suppress a warning since this method doesn't need synchronization\n        return this;\n    }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException b(Class<?> a, String b) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), a, b);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "02a89c586c78a2c7250f6086f9551639e96890debd177607792426dc172978b3", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "garble-identifiers", "level": 4, "line_count": 28, "local_path": "identifiers/garble-identifiers/I04__netty__StacklessClosedChannelException__7b6e30a8.java", "order": 4, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 2, "identifiers_declared": 2, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-89dc7b6e30a8-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 971, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-45a46ab7294a-I05", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -0x1ebc92587e13a400L;\n\n    private StacklessClosedChannelException() { }\n\n    @Override\n    public Throwable fillInStackTrace() {\n        // Suppress a warning since this method doesn't need synchronization\n        return this;\n    }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException newInstance(Class<?> clazz, String method) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), clazz, method);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "9557d58f21079144c9958c0c81d406f5099489111e8fe8b00c0a10d377f97248", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "encode-integer-literals", "level": 5, "line_count": 28, "local_path": "expressions/encode-integer-literals/I05__netty__StacklessClosedChannelException__6ab7294a.java", "order": 5, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-45a46ab7294a-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 972, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-650e216df035-I06", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -2214806025529435136L;\n\n    private StacklessClosedChannelException() { }\n\n    @Override\n    public Throwable fillInStackTrace() {\n        // Suppress a warning since this method doesn't need synchronization\n        return this;\n    }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException newInstance(Class<?> clazz, String method) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), clazz, method);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "invert-conditions", "level": 6, "line_count": 28, "local_path": "expressions/invert-conditions/I06__netty__StacklessClosedChannelException__216df035.java", "order": 6, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-650e216df035-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 973, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fc4c97013606-I07", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -2214806025529435136L;\n\n    private StacklessClosedChannelException() {\nif (((0x494A ^ 0x494A) != 0)) { throw new AssertionError(); }\n }\n\n    @Override\n    public Throwable fillInStackTrace() {\nif (((0xCD11 ^ 0xCD11) != 0)) { throw new AssertionError(); }\n\n        // Suppress a warning since this method doesn't need synchronization\n        return this;\n    }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException newInstance(Class<?> clazz, String method) {\nif (((0x6A9E ^ 0x6A9E) != 0)) { throw new AssertionError(); }\n\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), clazz, method);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "f4bd887ef025378716a5155adce5ae6233661b5a747b56ce85da2ed6e4722ade", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "insert-dead-branches", "level": 7, "line_count": 34, "local_path": "code-injection/insert-dead-branches/I07__netty__StacklessClosedChannelException__97013606.java", "order": 7, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 3}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-fc4c97013606-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 974, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-93590d48d02d-I08", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -2214806025529435136L;\n\n    private StacklessClosedChannelException() {\n{\n  int remainingSteps = 3;\n  while (remainingSteps > 0) {\n    remainingSteps--;\n  }\n}\n }\n\n    @Override\n    public Throwable fillInStackTrace() {\n        // Suppress a warning since this method doesn't need synchronization\n        return this;\n    }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException newInstance(Class<?> clazz, String method) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), clazz, method);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "73b05285396f07b289b4d25003516f6775b11ee190316397cc5641b150185148", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 35, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__StacklessClosedChannelException__0d48d02d.java", "order": 8, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 1}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-93590d48d02d-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 975, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5d55c5bf4d54-I09", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -2214806025529435136L;\n\n    private StacklessClosedChannelException() { }\n\n    @Override\n    public Throwable fillInStackTrace() {\n{int lI0O_fc1e0b51=0x97D1;lI0O_fc1e0b51=((lI0O_fc1e0b51^0x97D1)|0)&-1;if(((lI0O_fc1e0b51&1)==1)){lI0O_fc1e0b51^=lI0O_fc1e0b51;}}\n\n        // Suppress a warning since this method doesn't need synchronization\n        return this;\n    }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException newInstance(Class<?> clazz, String method) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), clazz, method);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ff21135405796f4bf4d291235d4e40b011a9efcb98dec99beba7046695a9a34a", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 30, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__StacklessClosedChannelException__c5bf4d54.java", "order": 9, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-5d55c5bf4d54-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 976, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-970dc6b179cc-I10", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */ @UnstableApi public final class StacklessClosedChannelException extends ClosedChannelException { private static final long serialVersionUID = -2214806025529435136L; private StacklessClosedChannelException() { }\n\n    @Override\n    public Throwable fillInStackTrace() {\n        // Suppress a warning since this method doesn't need synchronization\n        return this; }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException newInstance(Class<?> clazz, String method) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), clazz, method);\n    } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "a2dc1c0c18605ba212daa8ca32cf4d9b2b8d08e195b3d4ab597988c3424e725d", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "partially-compact-layout", "level": 10, "line_count": 20, "local_path": "layout/partially-compact-layout/I10__netty__StacklessClosedChannelException__c6b179cc.java", "order": 10, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 17, "line_break_groups_removed": 6, "line_breaks_removed": 8, "whitespace_characters_removed": 14}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-970dc6b179cc-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 977, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0c26ab6b7b90-I11", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -2214806025529435136L;\n\n    private StacklessClosedChannelException() { }\n\n    @Override\n    public Throwable fillInStackTrace() {\n        // Suppress a warning since this method doesn't need synchronization\n        return this;\n    }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException newInstance(Class<?> clazz, String method) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), clazz, method);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 28, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__StacklessClosedChannelException__ab6b7b90.java", "order": 11, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-0c26ab6b7b90-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 978, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-830e26bbbf10-I12", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -2214806025529435136L;\n\n    private StacklessClosedChannelException() { }\n\n    @Override\n    public Throwable fillInStackTrace() {\n        // Suppress a warning since this method doesn't need synchronization\n        return this;\n    }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException newInstance(Class<?> clazz, String method) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), clazz, method);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 28, "local_path": "data-flow/inline-intermediate-variables/I12__netty__StacklessClosedChannelException__26bbbf10.java", "order": 12, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-830e26bbbf10-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 979, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b1e8cad6efc1-I13", "source": "package io.netty.channel;\nimport io.netty.util.internal.ThrowableUtil;\nimport io.netty.util.internal.UnstableApi;\nimport java.nio.channels.ClosedChannelException;\n\n/**\n * Cheap {@link ClosedChannelException} that does not fill in the stacktrace.\n */\n@UnstableApi\npublic final class StacklessClosedChannelException extends ClosedChannelException {\n\n    private static final long serialVersionUID = -2214806025529435136L;\n\n    private StacklessClosedChannelException() { }\n\n    @Override\n    public Throwable fillInStackTrace() {\n        // Suppress a warning since this method doesn't need synchronization\n        return this;\n    }\n\n    /**\n     * Creates a new {@link StacklessClosedChannelException} which has the origin of the given {@link Class} and method.\n     */\n    public static StacklessClosedChannelException newInstance(Class<?> clazz, String method) {\n        return ThrowableUtil.unknownStackTrace(new StacklessClosedChannelException(), clazz, method);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__StacklessClosedChannelException__4021ac03.java", "base_sample_id": "source-3a924fe011373b14", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java", "interference": "lower-for-to-while", "level": 13, "line_count": 28, "local_path": "control-flow/lower-for-to-while/I13__netty__StacklessClosedChannelException__cad6efc1.java", "order": 13, "original_content_sha256": "357a42ff6bba28d21fa914876732f89b586ee60538b7f9b9e5ffa74671dbb405", "parent_variant_id": "int-fd214021ac03-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/StacklessClosedChannelException.java#L23-L45", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "StacklessClosedChannelException", "variant_id": "int-b1e8cad6efc1-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 980, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0c2e17761b06-SRC", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup() {\n        this(0);\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads) {\n        this(nThreads, (Executor) null);\n    }\n\n    /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(ThreadFactory threadFactory) {\n        this(0, threadFactory, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory) {\n        this(nThreads, threadFactory, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor) {\n        this(nThreads, executor, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */\n    public NioEventLoopGroup(\n            int nThreads, ThreadFactory threadFactory, final SelectorProvider selectorProvider) {\n        this(nThreads, threadFactory, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory,\n        final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, threadFactory, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(\n            int nThreads, Executor executor, final SelectorProvider selectorProvider) {\n        this(nThreads, executor, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler,\n                             final EventLoopTaskQueueFactory taskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory);\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             SelectorProvider selectorProvider,\n                             SelectStrategyFactory selectStrategyFactory,\n                             RejectedExecutionHandler rejectedExecutionHandler,\n                             EventLoopTaskQueueFactory taskQueueFactory,\n                             EventLoopTaskQueueFactory tailTaskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory, tailTaskQueueFactory);\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated\n    public void setIoRatio(int ioRatio) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */\n    public void rebuildSelectors() {\n        for (EventExecutor e: this) {\n            ((NioEventLoop) e).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop newChild(Executor executor, IoHandlerFactory ioHandlerFactory, Object... args) {\n        RejectedExecutionHandler rejectedExecutionHandler = (RejectedExecutionHandler) args[0];\n        EventLoopTaskQueueFactory taskQueueFactory = null;\n        EventLoopTaskQueueFactory tailTaskQueueFactory = null;\n\n        int argsLength = args.length;\n        if (argsLength > 1) {\n            taskQueueFactory = (EventLoopTaskQueueFactory) args[1];\n        }\n        if (argsLength > 2) {\n            tailTaskQueueFactory = (EventLoopTaskQueueFactory) args[2];\n        }\n        return new NioEventLoop(\n                this, executor, ioHandlerFactory, taskQueueFactory, tailTaskQueueFactory, rejectedExecutionHandler);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": null, "level": 0, "line_count": 178, "local_path": "source-original/SRC__netty__NioEventLoopGroup__17761b06.java", "order": 0, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-0c2e17761b06-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 799, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3944020f1849-I01", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n\n\n\n\n\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    \n\n\n\n    public NioEventLoopGroup() {\n        this(0);\n    }\n\n    \n\n\n\n    public NioEventLoopGroup(int nThreads) {\n        this(nThreads, (Executor) null);\n    }\n\n    \n\n\n\n    public NioEventLoopGroup(ThreadFactory threadFactory) {\n        this(0, threadFactory, SelectorProvider.provider());\n    }\n\n    \n\n\n\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory) {\n        this(nThreads, threadFactory, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor) {\n        this(nThreads, executor, SelectorProvider.provider());\n    }\n\n    \n\n\n\n    public NioEventLoopGroup(\n            int nThreads, ThreadFactory threadFactory, final SelectorProvider selectorProvider) {\n        this(nThreads, threadFactory, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory,\n        final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, threadFactory, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(\n            int nThreads, Executor executor, final SelectorProvider selectorProvider) {\n        this(nThreads, executor, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler,\n                             final EventLoopTaskQueueFactory taskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory);\n    }\n\n    \n\n\n\n\n\n\n\n\n\n\n\n\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             SelectorProvider selectorProvider,\n                             SelectStrategyFactory selectStrategyFactory,\n                             RejectedExecutionHandler rejectedExecutionHandler,\n                             EventLoopTaskQueueFactory taskQueueFactory,\n                             EventLoopTaskQueueFactory tailTaskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory, tailTaskQueueFactory);\n    }\n\n    \n\n\n\n\n    @Deprecated\n    public void setIoRatio(int ioRatio) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    \n\n\n\n    public void rebuildSelectors() {\n        for (EventExecutor e: this) {\n            ((NioEventLoop) e).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop newChild(Executor executor, IoHandlerFactory ioHandlerFactory, Object... args) {\n        RejectedExecutionHandler rejectedExecutionHandler = (RejectedExecutionHandler) args[0];\n        EventLoopTaskQueueFactory taskQueueFactory = null;\n        EventLoopTaskQueueFactory tailTaskQueueFactory = null;\n\n        int argsLength = args.length;\n        if (argsLength > 1) {\n            taskQueueFactory = (EventLoopTaskQueueFactory) args[1];\n        }\n        if (argsLength > 2) {\n            tailTaskQueueFactory = (EventLoopTaskQueueFactory) args[2];\n        }\n        return new NioEventLoop(\n                this, executor, ioHandlerFactory, taskQueueFactory, tailTaskQueueFactory, rejectedExecutionHandler);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "eeab6f44ac28c6ea3bdfd8491f7fe6ae0faaf38210212984b4e73150cd1a0626", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "remove-comments", "level": 1, "line_count": 178, "local_path": "comments/remove-comments/I01__netty__NioEventLoopGroup__020f1849.java", "order": 1, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 2409, "comments_removed": 9}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-3944020f1849-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 800, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-21f6ff5d2aca-I02", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup() {\n        this(0);\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int n) {\n        this(n, (Executor) null);\n    }\n\n    /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(ThreadFactory thread) {\n        this(0, thread, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int n2, ThreadFactory thread2) {\n        this(n2, thread2, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int n3, Executor exe) {\n        this(n3, exe, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */\n    public NioEventLoopGroup(\n            int n4, ThreadFactory thread3, final SelectorProvider selector) {\n        this(n4, thread3, selector, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int n5, ThreadFactory thread4,\n        final SelectorProvider selector2, final SelectStrategyFactory select) {\n        super(n5, thread4, NioIoHandler.newFactory(selector2, select),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(\n            int n6, Executor exe2, final SelectorProvider selector3) {\n        this(n6, exe2, selector3, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int n7, Executor exe3, final SelectorProvider selector4,\n                             final SelectStrategyFactory select2) {\n        super(n7, exe3, NioIoHandler.newFactory(selector4, select2),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int n8, Executor exe4, EventExecutorChooserFactory chooser,\n                             final SelectorProvider selector5,\n                             final SelectStrategyFactory select3) {\n        super(n8, exe4, NioIoHandler.newFactory(selector5, select3), chooser,\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int n9, Executor exe5, EventExecutorChooserFactory chooser2,\n                             final SelectorProvider selector6,\n                             final SelectStrategyFactory select4,\n                             final RejectedExecutionHandler rejected) {\n        super(n9, exe5, NioIoHandler.newFactory(selector6, select4), chooser2,\n                rejected);\n    }\n\n    public NioEventLoopGroup(int n10, Executor exe6, EventExecutorChooserFactory chooser3,\n                             final SelectorProvider selector7,\n                             final SelectStrategyFactory select5,\n                             final RejectedExecutionHandler rejected2,\n                             final EventLoopTaskQueueFactory task) {\n        super(n10, exe6, NioIoHandler.newFactory(selector7, select5), chooser3,\n                rejected2, task);\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int n11, Executor exe7, EventExecutorChooserFactory chooser4,\n                             SelectorProvider selector8,\n                             SelectStrategyFactory select6,\n                             RejectedExecutionHandler rejected3,\n                             EventLoopTaskQueueFactory task2,\n                             EventLoopTaskQueueFactory tail) {\n        super(n11, exe7, NioIoHandler.newFactory(selector8, select6), chooser4,\n                rejected3, task2, tail);\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated\n    public void set(int io2) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */\n    public void rebuild() {\n        for (EventExecutor e: this) {\n            ((NioEventLoop) e).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop new2(Executor exe8, IoHandlerFactory io3, Object... arg) {\n        RejectedExecutionHandler rejected4 = (RejectedExecutionHandler) arg[0];\n        EventLoopTaskQueueFactory task3 = null;\n        EventLoopTaskQueueFactory tail2 = null;\n\n        int args = arg.length;\n        if (args > 1) {\n            task3 = (EventLoopTaskQueueFactory) arg[1];\n        }\n        if (args > 2) {\n            tail2 = (EventLoopTaskQueueFactory) arg[2];\n        }\n        return new NioEventLoop(\n                this, exe8, io3, task3, tail2, rejected4);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "4debb0a92d9b15f279a26f340687debd5564f930b6147cbb044287b45b11eedf", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "shorten-identifiers", "level": 2, "line_count": 178, "local_path": "identifiers/shorten-identifiers/I02__netty__NioEventLoopGroup__ff5d2aca.java", "order": 2, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 60, "identifiers_declared": 55, "local_name_collisions_avoided": 43, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 1, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-21f6ff5d2aca-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 801, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fe1368901474-I03", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup() {\n        this(0);\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int customer) {\n        this(customer, (Executor) null);\n    }\n\n    /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(ThreadFactory currentRecord) {\n        this(0, currentRecord, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int response, ThreadFactory backupSession) {\n        this(response, backupSession, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int nextData, Executor location) {\n        this(nextData, location, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */\n    public NioEventLoopGroup(\n            int nextUser, ThreadFactory secureBalance, final SelectorProvider pendingSession) {\n        this(nextUser, secureBalance, pendingSession, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int localKey, ThreadFactory currentBuffer,\n        final SelectorProvider currentSession, final SelectStrategyFactory pendingBalance) {\n        super(localKey, currentBuffer, NioIoHandler.newFactory(currentSession, pendingBalance),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(\n            int document, Executor schedule, final SelectorProvider primaryAddress) {\n        this(document, schedule, primaryAddress, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nextNode, Executor nextPath, final SelectorProvider primaryBalance,\n                             final SelectStrategyFactory defaultAddress) {\n        super(nextNode, nextPath, NioIoHandler.newFactory(primaryBalance, defaultAddress),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int shipment, Executor finalKey, EventExecutorChooserFactory defaultSession,\n                             final SelectorProvider primarySession,\n                             final SelectStrategyFactory currentRequest) {\n        super(shipment, finalKey, NioIoHandler.newFactory(primarySession, currentRequest), defaultSession,\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nextMode, Executor discount, EventExecutorChooserFactory currentAddress,\n                             final SelectorProvider currentMessage,\n                             final SelectStrategyFactory defaultRequest,\n                             final RejectedExecutionHandler primaryAccount) {\n        super(nextMode, discount, NioIoHandler.newFactory(currentMessage, defaultRequest), currentAddress,\n                primaryAccount);\n    }\n\n    public NioEventLoopGroup(int duration, Executor category, EventExecutorChooserFactory currentAccount,\n                             final SelectorProvider pendingAddress,\n                             final SelectStrategyFactory pendingRequest,\n                             final RejectedExecutionHandler primaryRequest,\n                             final EventLoopTaskQueueFactory defaultAccount) {\n        super(duration, category, NioIoHandler.newFactory(pendingAddress, pendingRequest), currentAccount,\n                primaryRequest, defaultAccount);\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int nextItem, Executor context, EventExecutorChooserFactory primaryMessage,\n                             SelectorProvider defaultBalance,\n                             SelectStrategyFactory defaultMessage,\n                             RejectedExecutionHandler currentBalance,\n                             EventLoopTaskQueueFactory pendingMessage,\n                             EventLoopTaskQueueFactory pendingAccount) {\n        super(nextItem, context, NioIoHandler.newFactory(defaultBalance, defaultMessage), primaryMessage,\n                currentBalance, pendingMessage, pendingAccount);\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated\n    public void parseValue(int invoice) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */\n    public void validateSession() {\n        for (EventExecutor map: this) {\n            ((NioEventLoop) map).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop parseKey(Executor profile, IoHandlerFactory sharedRequest, Object... step) {\n        RejectedExecutionHandler pendingClient = (RejectedExecutionHandler) step[0];\n        EventLoopTaskQueueFactory currentConfig = null;\n        EventLoopTaskQueueFactory recentAccount = null;\n\n        int localOrder = step.length;\n        if (localOrder > 1) {\n            currentConfig = (EventLoopTaskQueueFactory) step[1];\n        }\n        if (localOrder > 2) {\n            recentAccount = (EventLoopTaskQueueFactory) step[2];\n        }\n        return new NioEventLoop(\n                this, profile, sharedRequest, currentConfig, recentAccount, pendingClient);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "8b3a0bebbc53ef503e7ce615cf5ec81556ee7bb9b7f25568bb6e0d376ef5b290", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "mislead-identifiers", "level": 3, "line_count": 178, "local_path": "identifiers/mislead-identifiers/I03__netty__NioEventLoopGroup__68901474.java", "order": 3, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 60, "identifiers_declared": 55, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 242, "local_exact_length_matches": 28, "local_random_pool_selections": 55, "local_total_length_difference": 126, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 2, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 1}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-fe1368901474-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 802, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6dc8bb7d137c-I04", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup() {\n        this(0);\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int a) {\n        this(a, (Executor) null);\n    }\n\n    /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(ThreadFactory b) {\n        this(0, b, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int c, ThreadFactory d) {\n        this(c, d, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int f, Executor g) {\n        this(f, g, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */\n    public NioEventLoopGroup(\n            int h, ThreadFactory i, final SelectorProvider j) {\n        this(h, i, j, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int k, ThreadFactory l,\n        final SelectorProvider m, final SelectStrategyFactory n) {\n        super(k, l, NioIoHandler.newFactory(m, n),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(\n            int o, Executor p, final SelectorProvider q) {\n        this(o, p, q, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int r, Executor s, final SelectorProvider t,\n                             final SelectStrategyFactory u) {\n        super(r, s, NioIoHandler.newFactory(t, u),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int v, Executor w, EventExecutorChooserFactory x,\n                             final SelectorProvider y,\n                             final SelectStrategyFactory z) {\n        super(v, w, NioIoHandler.newFactory(y, z), x,\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int A, Executor B, EventExecutorChooserFactory C,\n                             final SelectorProvider D,\n                             final SelectStrategyFactory E,\n                             final RejectedExecutionHandler F) {\n        super(A, B, NioIoHandler.newFactory(D, E), C,\n                F);\n    }\n\n    public NioEventLoopGroup(int G, Executor H, EventExecutorChooserFactory I,\n                             final SelectorProvider J,\n                             final SelectStrategyFactory K,\n                             final RejectedExecutionHandler L,\n                             final EventLoopTaskQueueFactory M) {\n        super(G, H, NioIoHandler.newFactory(J, K), I,\n                L, M);\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int N, Executor O, EventExecutorChooserFactory P,\n                             SelectorProvider Q,\n                             SelectStrategyFactory R,\n                             RejectedExecutionHandler S,\n                             EventLoopTaskQueueFactory T,\n                             EventLoopTaskQueueFactory U) {\n        super(N, O, NioIoHandler.newFactory(Q, R), P,\n                S, T, U);\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated\n    public void a(int V) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */\n    public void b() {\n        for (EventExecutor e: this) {\n            ((NioEventLoop) e).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop c(Executor W, IoHandlerFactory X, Object... Y) {\n        RejectedExecutionHandler Z = (RejectedExecutionHandler) Y[0];\n        EventLoopTaskQueueFactory aa = null;\n        EventLoopTaskQueueFactory ab = null;\n\n        int ac = Y.length;\n        if (ac > 1) {\n            aa = (EventLoopTaskQueueFactory) Y[1];\n        }\n        if (ac > 2) {\n            ab = (EventLoopTaskQueueFactory) Y[2];\n        }\n        return new NioEventLoop(\n                this, W, X, aa, ab, Z);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "692aa9cf751d2dd36fd45771185ad67b9b3e3f4ee15fca9e8fc9abcc59e5b3da", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "garble-identifiers", "level": 4, "line_count": 178, "local_path": "identifiers/garble-identifiers/I04__netty__NioEventLoopGroup__bb7d137c.java", "order": 4, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 60, "identifiers_declared": 55, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-6dc8bb7d137c-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 803, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8e9f736b52f9-I05", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup() {\n        this(0x0);\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads) {\n        this(nThreads, (Executor) null);\n    }\n\n    /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(ThreadFactory threadFactory) {\n        this(0x0, threadFactory, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory) {\n        this(nThreads, threadFactory, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor) {\n        this(nThreads, executor, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */\n    public NioEventLoopGroup(\n            int nThreads, ThreadFactory threadFactory, final SelectorProvider selectorProvider) {\n        this(nThreads, threadFactory, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory,\n        final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, threadFactory, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(\n            int nThreads, Executor executor, final SelectorProvider selectorProvider) {\n        this(nThreads, executor, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler,\n                             final EventLoopTaskQueueFactory taskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory);\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             SelectorProvider selectorProvider,\n                             SelectStrategyFactory selectStrategyFactory,\n                             RejectedExecutionHandler rejectedExecutionHandler,\n                             EventLoopTaskQueueFactory taskQueueFactory,\n                             EventLoopTaskQueueFactory tailTaskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory, tailTaskQueueFactory);\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated\n    public void setIoRatio(int ioRatio) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */\n    public void rebuildSelectors() {\n        for (EventExecutor e: this) {\n            ((NioEventLoop) e).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop newChild(Executor executor, IoHandlerFactory ioHandlerFactory, Object... args) {\n        RejectedExecutionHandler rejectedExecutionHandler = (RejectedExecutionHandler) args[0x0];\n        EventLoopTaskQueueFactory taskQueueFactory = null;\n        EventLoopTaskQueueFactory tailTaskQueueFactory = null;\n\n        int argsLength = args.length;\n        if (argsLength > 0x1) {\n            taskQueueFactory = (EventLoopTaskQueueFactory) args[0x1];\n        }\n        if (argsLength > 0x2) {\n            tailTaskQueueFactory = (EventLoopTaskQueueFactory) args[0x2];\n        }\n        return new NioEventLoop(\n                this, executor, ioHandlerFactory, taskQueueFactory, tailTaskQueueFactory, rejectedExecutionHandler);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "9ccb52ce48099dbf7163e38d719131ff2f735e4e5d7dc94e292fd39e57a05a24", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "encode-integer-literals", "level": 5, "line_count": 178, "local_path": "expressions/encode-integer-literals/I05__netty__NioEventLoopGroup__736b52f9.java", "order": 5, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 7}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-8e9f736b52f9-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 804, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-07dcfc5553fa-I06", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup() {\n        this(0);\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads) {\n        this(nThreads, (Executor) null);\n    }\n\n    /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(ThreadFactory threadFactory) {\n        this(0, threadFactory, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory) {\n        this(nThreads, threadFactory, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor) {\n        this(nThreads, executor, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */\n    public NioEventLoopGroup(\n            int nThreads, ThreadFactory threadFactory, final SelectorProvider selectorProvider) {\n        this(nThreads, threadFactory, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory,\n        final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, threadFactory, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(\n            int nThreads, Executor executor, final SelectorProvider selectorProvider) {\n        this(nThreads, executor, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler,\n                             final EventLoopTaskQueueFactory taskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory);\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             SelectorProvider selectorProvider,\n                             SelectStrategyFactory selectStrategyFactory,\n                             RejectedExecutionHandler rejectedExecutionHandler,\n                             EventLoopTaskQueueFactory taskQueueFactory,\n                             EventLoopTaskQueueFactory tailTaskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory, tailTaskQueueFactory);\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated\n    public void setIoRatio(int ioRatio) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */\n    public void rebuildSelectors() {\n        for (EventExecutor e: this) {\n            ((NioEventLoop) e).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop newChild(Executor executor, IoHandlerFactory ioHandlerFactory, Object... args) {\n        RejectedExecutionHandler rejectedExecutionHandler = (RejectedExecutionHandler) args[0];\n        EventLoopTaskQueueFactory taskQueueFactory = null;\n        EventLoopTaskQueueFactory tailTaskQueueFactory = null;\n\n        int argsLength = args.length;\n        if (!((argsLength > 1))) {} else {\n            taskQueueFactory = (EventLoopTaskQueueFactory) args[1];\n        }\n        if (!((argsLength > 2))) {} else {\n            tailTaskQueueFactory = (EventLoopTaskQueueFactory) args[2];\n        }\n        return new NioEventLoop(\n                this, executor, ioHandlerFactory, taskQueueFactory, tailTaskQueueFactory, rejectedExecutionHandler);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "aa4925ff920ec48694210c8c8ebc8497ea56eca863bfe83b2293889436fee891", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "invert-conditions", "level": 6, "line_count": 178, "local_path": "expressions/invert-conditions/I06__netty__NioEventLoopGroup__fc5553fa.java", "order": 6, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-07dcfc5553fa-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 805, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-daa1a34ec3bc-I07", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup() {\n        this(0);\nif (((0x3B87 ^ 0x3B87) != 0)) { throw new AssertionError(); }\n\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads) {\n        this(nThreads, (Executor) null);\nif (((0x1D3 ^ 0x1D3) != 0)) { throw new AssertionError(); }\n\n    }\n\n    /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(ThreadFactory threadFactory) {\n        this(0, threadFactory, SelectorProvider.provider());\nif (((0x1C19 ^ 0x1C19) != 0)) { throw new AssertionError(); }\n\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory) {\n        this(nThreads, threadFactory, SelectorProvider.provider());\nif (((0x9980 ^ 0x9980) != 0)) { throw new AssertionError(); }\n\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor) {\n        this(nThreads, executor, SelectorProvider.provider());\nif (((0x1E3B ^ 0x1E3B) != 0)) { throw new AssertionError(); }\n\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */\n    public NioEventLoopGroup(\n            int nThreads, ThreadFactory threadFactory, final SelectorProvider selectorProvider) {\n        this(nThreads, threadFactory, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\nif (((0x711E ^ 0x711E) != 0)) { throw new AssertionError(); }\n\n    }\n\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory,\n        final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, threadFactory, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\nif (((0x1D63 ^ 0x1D63) != 0)) { throw new AssertionError(); }\n\n    }\n\n    public NioEventLoopGroup(\n            int nThreads, Executor executor, final SelectorProvider selectorProvider) {\n        this(nThreads, executor, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\nif (((0xA34C ^ 0xA34C) != 0)) { throw new AssertionError(); }\n\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\nif (((0x5C53 ^ 0x5C53) != 0)) { throw new AssertionError(); }\n\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                RejectedExecutionHandlers.reject());\nif (((0x36F2 ^ 0x36F2) != 0)) { throw new AssertionError(); }\n\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler);\nif (((0xF996 ^ 0xF996) != 0)) { throw new AssertionError(); }\n\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler,\n                             final EventLoopTaskQueueFactory taskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory);\nif (((0xA253 ^ 0xA253) != 0)) { throw new AssertionError(); }\n\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             SelectorProvider selectorProvider,\n                             SelectStrategyFactory selectStrategyFactory,\n                             RejectedExecutionHandler rejectedExecutionHandler,\n                             EventLoopTaskQueueFactory taskQueueFactory,\n                             EventLoopTaskQueueFactory tailTaskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory, tailTaskQueueFactory);\nif (((0x5CC9 ^ 0x5CC9) != 0)) { throw new AssertionError(); }\n\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated\n    public void setIoRatio(int ioRatio) {\nif (((0x365 ^ 0x365) != 0)) { throw new AssertionError(); }\n\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */\n    public void rebuildSelectors() {\nif (((0x6F2B ^ 0x6F2B) != 0)) { throw new AssertionError(); }\n\n        for (EventExecutor e: this) {\n            ((NioEventLoop) e).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop newChild(Executor executor, IoHandlerFactory ioHandlerFactory, Object... args) {\nif (((0x5C24 ^ 0x5C24) != 0)) { throw new AssertionError(); }\n\n        RejectedExecutionHandler rejectedExecutionHandler = (RejectedExecutionHandler) args[0];\n        EventLoopTaskQueueFactory taskQueueFactory = null;\n        EventLoopTaskQueueFactory tailTaskQueueFactory = null;\n\n        int argsLength = args.length;\n        if (argsLength > 1) {\n            taskQueueFactory = (EventLoopTaskQueueFactory) args[1];\n        }\n        if (argsLength > 2) {\n            tailTaskQueueFactory = (EventLoopTaskQueueFactory) args[2];\n        }\n        return new NioEventLoop(\n                this, executor, ioHandlerFactory, taskQueueFactory, tailTaskQueueFactory, rejectedExecutionHandler);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "610214cabef653b92e13c94b74ec738f4762c21339fef65b787d3e14312dcfae", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "insert-dead-branches", "level": 7, "line_count": 210, "local_path": "code-injection/insert-dead-branches/I07__netty__NioEventLoopGroup__a34ec3bc.java", "order": 7, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 16}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-daa1a34ec3bc-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 806, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-303c8d6f2385-I08", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup() {\n        this(0);\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads) {\n        this(nThreads, (Executor) null);\n    }\n\n    /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(ThreadFactory threadFactory) {\n        this(0, threadFactory, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory) {\n        this(nThreads, threadFactory, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor) {\n        this(nThreads, executor, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */\n    public NioEventLoopGroup(\n            int nThreads, ThreadFactory threadFactory, final SelectorProvider selectorProvider) {\n        this(nThreads, threadFactory, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory,\n        final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, threadFactory, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(\n            int nThreads, Executor executor, final SelectorProvider selectorProvider) {\n        this(nThreads, executor, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler,\n                             final EventLoopTaskQueueFactory taskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory);\n{\n  int previousNumber = 0;\n  int currentNumber = 1;\n  for (int sequenceStep = 0; sequenceStep < 4; sequenceStep++) {\n    int nextNumber = previousNumber + currentNumber;\n    previousNumber = currentNumber;\n    currentNumber = nextNumber;\n  }\n}\n\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             SelectorProvider selectorProvider,\n                             SelectStrategyFactory selectStrategyFactory,\n                             RejectedExecutionHandler rejectedExecutionHandler,\n                             EventLoopTaskQueueFactory taskQueueFactory,\n                             EventLoopTaskQueueFactory tailTaskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory, tailTaskQueueFactory);\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated\n    public void setIoRatio(int ioRatio) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */\n    public void rebuildSelectors() {\n        for (EventExecutor e: this) {\n            ((NioEventLoop) e).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop newChild(Executor executor, IoHandlerFactory ioHandlerFactory, Object... args) {\n        RejectedExecutionHandler rejectedExecutionHandler = (RejectedExecutionHandler) args[0];\n        EventLoopTaskQueueFactory taskQueueFactory = null;\n        EventLoopTaskQueueFactory tailTaskQueueFactory = null;\n\n        int argsLength = args.length;\n        if (argsLength > 1) {\n            taskQueueFactory = (EventLoopTaskQueueFactory) args[1];\n        }\n        if (argsLength > 2) {\n            tailTaskQueueFactory = (EventLoopTaskQueueFactory) args[2];\n        }\n        return new NioEventLoop(\n                this, executor, ioHandlerFactory, taskQueueFactory, tailTaskQueueFactory, rejectedExecutionHandler);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "553f725780e4ef4013afd7356b516acb775e071fd93f19393d7a06ea61433f2c", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 188, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__NioEventLoopGroup__8d6f2385.java", "order": 8, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 9, "readable_template_index": 8}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-303c8d6f2385-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 807, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-56138f550b9b-I09", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup() {\n        this(0);\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads) {\n        this(nThreads, (Executor) null);\n    }\n\n    /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(ThreadFactory threadFactory) {\n        this(0, threadFactory, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory) {\n        this(nThreads, threadFactory, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor) {\n        this(nThreads, executor, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */\n    public NioEventLoopGroup(\n            int nThreads, ThreadFactory threadFactory, final SelectorProvider selectorProvider) {\n        this(nThreads, threadFactory, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory,\n        final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, threadFactory, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(\n            int nThreads, Executor executor, final SelectorProvider selectorProvider) {\n        this(nThreads, executor, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler,\n                             final EventLoopTaskQueueFactory taskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory);\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             SelectorProvider selectorProvider,\n                             SelectStrategyFactory selectStrategyFactory,\n                             RejectedExecutionHandler rejectedExecutionHandler,\n                             EventLoopTaskQueueFactory taskQueueFactory,\n                             EventLoopTaskQueueFactory tailTaskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory, tailTaskQueueFactory);\n{int lI0O_43ae884d=0x8F32;lI0O_43ae884d=(lI0O_43ae884d<<1)^(lI0O_43ae884d>>>1);lI0O_43ae884d&=0;}\n\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated\n    public void setIoRatio(int ioRatio) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */\n    public void rebuildSelectors() {\n        for (EventExecutor e: this) {\n            ((NioEventLoop) e).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop newChild(Executor executor, IoHandlerFactory ioHandlerFactory, Object... args) {\n        RejectedExecutionHandler rejectedExecutionHandler = (RejectedExecutionHandler) args[0];\n        EventLoopTaskQueueFactory taskQueueFactory = null;\n        EventLoopTaskQueueFactory tailTaskQueueFactory = null;\n\n        int argsLength = args.length;\n        if (argsLength > 1) {\n            taskQueueFactory = (EventLoopTaskQueueFactory) args[1];\n        }\n        if (argsLength > 2) {\n            tailTaskQueueFactory = (EventLoopTaskQueueFactory) args[2];\n        }\n        return new NioEventLoop(\n                this, executor, ioHandlerFactory, taskQueueFactory, tailTaskQueueFactory, rejectedExecutionHandler);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "1a5892b3b941f423b63f8ee0bc6cf1d7b2cbe37469b8bc9217093a4a73ee79b4", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 180, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__NioEventLoopGroup__8f550b9b.java", "order": 9, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 3}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-56138f550b9b-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 808, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-66921c6c7039-I10", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory; import io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory; import io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop; import io.netty.util.concurrent.EventExecutor; import io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler; import io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider; import java.util.concurrent.Executor; import java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated public class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */ public NioEventLoopGroup() {\n        this(0); } /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads) { this(nThreads, (Executor) null);\n    } /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */ public NioEventLoopGroup(ThreadFactory threadFactory) {\n        this(0, threadFactory, SelectorProvider.provider()); } /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory) {\n        this(nThreads, threadFactory, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor) {\n        this(nThreads, executor, SelectorProvider.provider()); }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */ public NioEventLoopGroup(\n            int nThreads, ThreadFactory threadFactory, final SelectorProvider selectorProvider) { this(nThreads, threadFactory, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    } public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory, final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, threadFactory, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject()); } public NioEventLoopGroup(\n            int nThreads, Executor executor, final SelectorProvider selectorProvider) {\n        this(nThreads, executor, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    } public NioEventLoopGroup(int nThreads, Executor executor, final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) { super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    } public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory) { super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory, RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler) { super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory, rejectedExecutionHandler); }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory, final RejectedExecutionHandler rejectedExecutionHandler, final EventLoopTaskQueueFactory taskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory);\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory, SelectorProvider selectorProvider,\n                             SelectStrategyFactory selectStrategyFactory,\n                             RejectedExecutionHandler rejectedExecutionHandler,\n                             EventLoopTaskQueueFactory taskQueueFactory,\n                             EventLoopTaskQueueFactory tailTaskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory, tailTaskQueueFactory);\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated public void setIoRatio(int ioRatio) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\"); }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */ public void rebuildSelectors() { for (EventExecutor e: this) {\n            ((NioEventLoop) e).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop newChild(Executor executor, IoHandlerFactory ioHandlerFactory, Object... args) { RejectedExecutionHandler rejectedExecutionHandler = (RejectedExecutionHandler) args[0]; EventLoopTaskQueueFactory taskQueueFactory = null; EventLoopTaskQueueFactory tailTaskQueueFactory = null;\n\n        int argsLength = args.length;\n        if (argsLength > 1) {\n            taskQueueFactory = (EventLoopTaskQueueFactory) args[1];\n        }\n        if (argsLength > 2) {\n            tailTaskQueueFactory = (EventLoopTaskQueueFactory) args[2]; } return new NioEventLoop( this, executor, ioHandlerFactory, taskQueueFactory, tailTaskQueueFactory, rejectedExecutionHandler); }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "ed386a4b3ac44a6421aa27758a815699098d42081de2ad2a06f956ef85922e73", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "partially-compact-layout", "level": 10, "line_count": 124, "local_path": "layout/partially-compact-layout/I10__netty__NioEventLoopGroup__1c6c7039.java", "order": 10, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 119, "line_break_groups_removed": 47, "line_breaks_removed": 54, "whitespace_characters_removed": 372}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-66921c6c7039-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 809, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-32c896a433eb-I11", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup() {\n        this(0);\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads) {\n        this(nThreads, (Executor) null);\n    }\n\n    /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(ThreadFactory threadFactory) {\n        this(0, threadFactory, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory) {\n        this(nThreads, threadFactory, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor) {\n        this(nThreads, executor, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */\n    public NioEventLoopGroup(\n            int nThreads, ThreadFactory threadFactory, final SelectorProvider selectorProvider) {\n        this(nThreads, threadFactory, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory,\n        final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, threadFactory, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(\n            int nThreads, Executor executor, final SelectorProvider selectorProvider) {\n        this(nThreads, executor, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler,\n                             final EventLoopTaskQueueFactory taskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory);\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             SelectorProvider selectorProvider,\n                             SelectStrategyFactory selectStrategyFactory,\n                             RejectedExecutionHandler rejectedExecutionHandler,\n                             EventLoopTaskQueueFactory taskQueueFactory,\n                             EventLoopTaskQueueFactory tailTaskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory, tailTaskQueueFactory);\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated\n    public void setIoRatio(int ioRatio) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */\n    public void rebuildSelectors() {\n        for (EventExecutor e: this) {\n            ((NioEventLoop) e).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop newChild(Executor executor, IoHandlerFactory ioHandlerFactory, Object... args) {\n        final int a = 1;\n        final int b = -1;\n        RejectedExecutionHandler rejectedExecutionHandler = (RejectedExecutionHandler) args[(a + b)];\n        EventLoopTaskQueueFactory taskQueueFactory = null;\n        EventLoopTaskQueueFactory tailTaskQueueFactory = null;\n\n        int argsLength = args.length;\n        final int c = 2;\n        final int d = -1;\n        if (argsLength > (c + d)) {\n            final int f = 2;\n            final int g = -1;\n            taskQueueFactory = (EventLoopTaskQueueFactory) args[(f + g)];\n        }\n        final int h = 1;\n        final int i = 1;\n        if (argsLength > (h + i)) {\n            final int j = 1;\n            final int k = 1;\n            tailTaskQueueFactory = (EventLoopTaskQueueFactory) args[(j + k)];\n        }\n        return new NioEventLoop(\n                this, executor, ioHandlerFactory, taskQueueFactory, tailTaskQueueFactory, rejectedExecutionHandler);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "9377cd352da9de66e7bb6f84e6bffcf7cd2deae5d6aec544578609276ce16f94", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 188, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__NioEventLoopGroup__96a433eb.java", "order": 11, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 5, "intermediate_variables_introduced": 10, "statements_augmented": 5}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-32c896a433eb-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 810, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-05e522d8b0f4-I12", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup() {\n        this(0);\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads) {\n        this(nThreads, (Executor) null);\n    }\n\n    /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(ThreadFactory threadFactory) {\n        this(0, threadFactory, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory) {\n        this(nThreads, threadFactory, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor) {\n        this(nThreads, executor, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */\n    public NioEventLoopGroup(\n            int nThreads, ThreadFactory threadFactory, final SelectorProvider selectorProvider) {\n        this(nThreads, threadFactory, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory,\n        final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, threadFactory, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(\n            int nThreads, Executor executor, final SelectorProvider selectorProvider) {\n        this(nThreads, executor, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler,\n                             final EventLoopTaskQueueFactory taskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory);\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             SelectorProvider selectorProvider,\n                             SelectStrategyFactory selectStrategyFactory,\n                             RejectedExecutionHandler rejectedExecutionHandler,\n                             EventLoopTaskQueueFactory taskQueueFactory,\n                             EventLoopTaskQueueFactory tailTaskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory, tailTaskQueueFactory);\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated\n    public void setIoRatio(int ioRatio) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */\n    public void rebuildSelectors() {\n        for (EventExecutor e: this) {\n            ((NioEventLoop) e).rebuildSelector();\n        }\n    }\n\n    @Override\n    protected IoEventLoop newChild(Executor executor, IoHandlerFactory ioHandlerFactory, Object... args) {\n        \n        EventLoopTaskQueueFactory taskQueueFactory = null;\n        EventLoopTaskQueueFactory tailTaskQueueFactory = null;\n\n        int argsLength = args.length;\n        if (argsLength > 1) {\n            taskQueueFactory = (EventLoopTaskQueueFactory) args[1];\n        }\n        if (argsLength > 2) {\n            tailTaskQueueFactory = (EventLoopTaskQueueFactory) args[2];\n        }\n        return new NioEventLoop(\n                this, executor, ioHandlerFactory, taskQueueFactory, tailTaskQueueFactory, ((RejectedExecutionHandler) args[0]));\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "a0920d4ef3ba9a11828b2dddaad4e7180bf5d1ccda59d6bba985ab5edfe52f67", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 178, "local_path": "data-flow/inline-intermediate-variables/I12__netty__NioEventLoopGroup__22d8b0f4.java", "order": 12, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-05e522d8b0f4-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 811, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4bc6af703235-I13", "source": "package io.netty.channel.nio;\nimport io.netty.channel.Channel;\nimport io.netty.channel.DefaultSelectStrategyFactory;\nimport io.netty.channel.EventLoopTaskQueueFactory;\nimport io.netty.channel.IoEventLoop;\nimport io.netty.channel.IoEventLoopGroup;\nimport io.netty.channel.IoHandlerFactory;\nimport io.netty.channel.MultiThreadIoEventLoopGroup;\nimport io.netty.channel.SelectStrategyFactory;\nimport io.netty.channel.SingleThreadEventLoop;\nimport io.netty.util.concurrent.EventExecutor;\nimport io.netty.util.concurrent.EventExecutorChooserFactory;\nimport io.netty.util.concurrent.RejectedExecutionHandler;\nimport io.netty.util.concurrent.RejectedExecutionHandlers;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.nio.channels.Selector;\nimport java.nio.channels.spi.SelectorProvider;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.ThreadFactory;\n\n/**\n * {@link MultiThreadIoEventLoopGroup} implementation which is used for NIO {@link Selector} based {@link Channel}s.\n *\n * @deprecated Use {@link MultiThreadIoEventLoopGroup} with {@link NioIoHandler#newFactory()}.\n */\n@Deprecated\npublic class NioEventLoopGroup extends MultiThreadIoEventLoopGroup implements IoEventLoopGroup {\n\n    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(NioEventLoopGroup.class);\n\n    /**\n     * Create a new instance using the default number of threads, the default {@link ThreadFactory} and\n     * the {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup() {\n        this(0);\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads) {\n        this(nThreads, (Executor) null);\n    }\n\n    /**\n     * Create a new instance using the default number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(ThreadFactory threadFactory) {\n        this(0, threadFactory, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the\n     * {@link SelectorProvider} which is returned by {@link SelectorProvider#provider()}.\n     */\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory) {\n        this(nThreads, threadFactory, SelectorProvider.provider());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor) {\n        this(nThreads, executor, SelectorProvider.provider());\n    }\n\n    /**\n     * Create a new instance using the specified number of threads, the given {@link ThreadFactory} and the given\n     * {@link SelectorProvider}.\n     */\n    public NioEventLoopGroup(\n            int nThreads, ThreadFactory threadFactory, final SelectorProvider selectorProvider) {\n        this(nThreads, threadFactory, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, ThreadFactory threadFactory,\n        final SelectorProvider selectorProvider, final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, threadFactory, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(\n            int nThreads, Executor executor, final SelectorProvider selectorProvider) {\n        this(nThreads, executor, selectorProvider, DefaultSelectStrategyFactory.INSTANCE);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory),\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                RejectedExecutionHandlers.reject());\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler);\n    }\n\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             final SelectorProvider selectorProvider,\n                             final SelectStrategyFactory selectStrategyFactory,\n                             final RejectedExecutionHandler rejectedExecutionHandler,\n                             final EventLoopTaskQueueFactory taskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory);\n    }\n\n    /**\n     * @param nThreads the number of threads that will be used by this instance.\n     * @param executor the Executor to use, or {@code null} if default one should be used.\n     * @param chooserFactory the {@link EventExecutorChooserFactory} to use.\n     * @param selectorProvider the {@link SelectorProvider} to use.\n     * @param selectStrategyFactory the {@link SelectStrategyFactory} to use.\n     * @param rejectedExecutionHandler the {@link RejectedExecutionHandler} to use.\n     * @param taskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                         {@link SingleThreadEventLoop#execute(Runnable)},\n     *                         or {@code null} if default one should be used.\n     * @param tailTaskQueueFactory the {@link EventLoopTaskQueueFactory} to use for\n     *                             {@link SingleThreadEventLoop#executeAfterEventLoopIteration(Runnable)},\n     *                             or {@code null} if default one should be used.\n     */\n    public NioEventLoopGroup(int nThreads, Executor executor, EventExecutorChooserFactory chooserFactory,\n                             SelectorProvider selectorProvider,\n                             SelectStrategyFactory selectStrategyFactory,\n                             RejectedExecutionHandler rejectedExecutionHandler,\n                             EventLoopTaskQueueFactory taskQueueFactory,\n                             EventLoopTaskQueueFactory tailTaskQueueFactory) {\n        super(nThreads, executor, NioIoHandler.newFactory(selectorProvider, selectStrategyFactory), chooserFactory,\n                rejectedExecutionHandler, taskQueueFactory, tailTaskQueueFactory);\n    }\n\n    /**\n     * This method is a no-op.\n     *\n     * @deprecated\n     */\n    @Deprecated\n    public void setIoRatio(int ioRatio) {\n        LOGGER.debug(\"NioEventLoopGroup.setIoRatio(int) logic was removed, this is a no-op\");\n    }\n\n    /**\n     * Replaces the current {@link Selector}s of the child event loops with newly created {@link Selector}s to work\n     * around the  infamous epoll 100% CPU bug.\n     */\n    public void rebuildSelectors() {\n        {\n          java.util.Iterator<?> loopIterator = (this).iterator();\n          while (loopIterator.hasNext()) {\n            EventExecutor e = (EventExecutor) loopIterator.next();\n            ((NioEventLoop) e).rebuildSelector();\n          }\n        }\n    }\n\n    @Override\n    protected IoEventLoop newChild(Executor executor, IoHandlerFactory ioHandlerFactory, Object... args) {\n        RejectedExecutionHandler rejectedExecutionHandler = (RejectedExecutionHandler) args[0];\n        EventLoopTaskQueueFactory taskQueueFactory = null;\n        EventLoopTaskQueueFactory tailTaskQueueFactory = null;\n\n        int argsLength = args.length;\n        if (argsLength > 1) {\n            taskQueueFactory = (EventLoopTaskQueueFactory) args[1];\n        }\n        if (argsLength > 2) {\n            tailTaskQueueFactory = (EventLoopTaskQueueFactory) args[2];\n        }\n        return new NioEventLoop(\n                this, executor, ioHandlerFactory, taskQueueFactory, tailTaskQueueFactory, rejectedExecutionHandler);\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__NioEventLoopGroup__17761b06.java", "base_sample_id": "source-02652eb11a8eadd9", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "00b02203ff697648e955b0db8d6921a530871eb62e7f1ef84a65e64933e5f558", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java", "interference": "lower-for-to-while", "level": 13, "line_count": 182, "local_path": "control-flow/lower-for-to-while/I13__netty__NioEventLoopGroup__af703235.java", "order": 13, "original_content_sha256": "c42ebc03e9541ac7ba37f9714dafb69b0869dcc3ba8d50cbf7562eac354a4bad", "parent_variant_id": "int-0c2e17761b06-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/nio/NioEventLoopGroup.java#L39-L195", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 1, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "NioEventLoopGroup", "variant_id": "int-4bc6af703235-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 812, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-11eb81eaf9fb-SRC", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method findOpenMethod(String methodName) {\n        if (PlatformDependent.javaVersion() >= 15) {\n            try {\n                return SelectorProvider.class.getMethod(methodName, java.net.ProtocolFamily.class);\n            } catch (Throwable e) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", methodName, e);\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    Object family) throws IOException {\n        if (family != null && method != null) {\n            try {\n                @SuppressWarnings(\"unchecked\")\n                C channel = (C) method.invoke(provider, family);\n                return channel;\n            } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    SocketProtocolFamily family) throws IOException {\n        if (family != null) {\n            return newChannel(method, provider, family.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newDomainSocketChannel(Method method, SelectorProvider provider) throws IOException {\n        return newChannel(method, provider, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": null, "level": 0, "line_count": 61, "local_path": "source-original/SRC__netty__SelectorProviderUtil__81eaf9fb.java", "order": 0, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": null, "readability_direction": "baseline", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-11eb81eaf9fb-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 911, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-07898d3c05f1-I01", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method findOpenMethod(String methodName) {\n        if (PlatformDependent.javaVersion() >= 15) {\n            try {\n                return SelectorProvider.class.getMethod(methodName, java.net.ProtocolFamily.class);\n            } catch (Throwable e) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", methodName, e);\n            }\n        }\n        return null;\n    }\n\n    \n\n\n\n\n\n    private static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    Object family) throws IOException {\n        if (family != null && method != null) {\n            try {\n                @SuppressWarnings(\"unchecked\")\n                C channel = (C) method.invoke(provider, family);\n                return channel;\n            } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    SocketProtocolFamily family) throws IOException {\n        if (family != null) {\n            return newChannel(method, provider, family.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newDomainSocketChannel(Method method, SelectorProvider provider) throws IOException {\n        return newChannel(method, provider, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "a2e0e6a65913128e39f4db5e8cb1da8baa0764accef8acaf1167b128a27a5501", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "remove-comments", "level": 1, "line_count": 61, "local_path": "comments/remove-comments/I01__netty__SelectorProviderUtil__8d3c05f1.java", "order": 1, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 288, "comments_removed": 1}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-07898d3c05f1-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 912, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5a5059adf875-I02", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method find(String method2) {\n        if (PlatformDependent.javaVersion() >= 15) {\n            try {\n                return SelectorProvider.class.getMethod(method2, java.net.ProtocolFamily.class);\n            } catch (Throwable e) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", method2, e);\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C new2(Method met, SelectorProvider pro,\n                                                    Object fam) throws IOException {\n        if (fam != null && met != null) {\n            try {\n                @SuppressWarnings(\"unchecked\")\n                C cha = (C) met.invoke(pro, fam);\n                return cha;\n            } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C new2(Method met2, SelectorProvider pro2,\n                                                    SocketProtocolFamily fam2) throws IOException {\n        if (fam2 != null) {\n            return new2(met2, pro2, fam2.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C new3(Method met3, SelectorProvider pro3) throws IOException {\n        return new2(met3, pro3, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "49cd639e8bdcd04228f20bb2afb34b6fb0a8adcfdb7fc7b700e279929a142fe7", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "shorten-identifiers", "level": 2, "line_count": 61, "local_path": "identifiers/shorten-identifiers/I02__netty__SelectorProviderUtil__59adf875.java", "order": 2, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 16, "identifiers_declared": 12, "local_name_collisions_avoided": 6, "method_calls_renamed": 2, "method_declarations_renamed": 4, "method_name_collisions_avoided": 2, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-5a5059adf875-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 913, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-59b11701c21e-I03", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method validateRecord(String pendingKey) {\n        if (PlatformDependent.javaVersion() >= 15) {\n            try {\n                return SelectorProvider.class.getMethod(pendingKey, java.net.ProtocolFamily.class);\n            } catch (Throwable map) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", pendingKey, map);\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C readWindow(Method source, SelectorProvider nextData,\n                                                    Object config) throws IOException {\n        if (config != null && source != null) {\n            try {\n                @SuppressWarnings(\"unchecked\")\n                C nextKey = (C) source.invoke(nextData, config);\n                return nextKey;\n            } catch (InvocationTargetException | IllegalAccessException age) {\n                throw new IOException(age);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C readWindow(Method result, SelectorProvider duration,\n                                                    SocketProtocolFamily window) throws IOException {\n        if (window != null) {\n            return readWindow(result, duration, window.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C validateAccount(Method status, SelectorProvider nextNode) throws IOException {\n        return readWindow(status, nextNode, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "63882fe0b65806528ecba5bba93bccdf46823b5df33adc6631000d0c7242fa28", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "mislead-identifiers", "level": 3, "line_count": 61, "local_path": "identifiers/mislead-identifiers/I03__netty__SelectorProviderUtil__1701c21e.java", "order": 3, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 16, "identifiers_declared": 12, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 5, "local_exact_length_matches": 10, "local_random_pool_selections": 12, "local_total_length_difference": 4, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 2, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 2, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 7}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-59b11701c21e-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 914, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-411b4df0d73b-I04", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method a(String a) {\n        if (PlatformDependent.javaVersion() >= 15) {\n            try {\n                return SelectorProvider.class.getMethod(a, java.net.ProtocolFamily.class);\n            } catch (Throwable b) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", a, b);\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C b(Method c, SelectorProvider d,\n                                                    Object e) throws IOException {\n        if (e != null && c != null) {\n            try {\n                @SuppressWarnings(\"unchecked\")\n                C f = (C) c.invoke(d, e);\n                return f;\n            } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C b(Method g, SelectorProvider h,\n                                                    SocketProtocolFamily i) throws IOException {\n        if (i != null) {\n            return b(g, h, i.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C c(Method j, SelectorProvider k) throws IOException {\n        return b(j, k, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "bb5f5378cb621bc8d66074f50fc1583dd6d1a3a0af33570ea065e70e2b6c4f33", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "garble-identifiers", "level": 4, "line_count": 61, "local_path": "identifiers/garble-identifiers/I04__netty__SelectorProviderUtil__4df0d73b.java", "order": 4, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 16, "identifiers_declared": 12, "local_name_collisions_avoided": 0, "method_calls_renamed": 2, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-411b4df0d73b-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 915, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1d3a51bd901b-I05", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method findOpenMethod(String methodName) {\n        if (PlatformDependent.javaVersion() >= 0xf) {\n            try {\n                return SelectorProvider.class.getMethod(methodName, java.net.ProtocolFamily.class);\n            } catch (Throwable e) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", methodName, e);\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    Object family) throws IOException {\n        if (family != null && method != null) {\n            try {\n                @SuppressWarnings(\"unchecked\")\n                C channel = (C) method.invoke(provider, family);\n                return channel;\n            } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    SocketProtocolFamily family) throws IOException {\n        if (family != null) {\n            return newChannel(method, provider, family.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newDomainSocketChannel(Method method, SelectorProvider provider) throws IOException {\n        return newChannel(method, provider, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "9e5d0992aec13a4cae3cc535bba5f521256eff58491c90dce6f566aef1abb505", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "encode-integer-literals", "level": 5, "line_count": 61, "local_path": "expressions/encode-integer-literals/I05__netty__SelectorProviderUtil__51bd901b.java", "order": 5, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-1d3a51bd901b-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 916, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4493be52e271-I06", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method findOpenMethod(String methodName) {\n        if (!((PlatformDependent.javaVersion() >= 15))) {} else {\n            try {\n                return SelectorProvider.class.getMethod(methodName, java.net.ProtocolFamily.class);\n            } catch (Throwable e) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", methodName, e);\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    Object family) throws IOException {\n        if (!((family != null && method != null))) {} else {\n            try {\n                @SuppressWarnings(\"unchecked\")\n                C channel = (C) method.invoke(provider, family);\n                return channel;\n            } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    SocketProtocolFamily family) throws IOException {\n        if (!((family != null))) {} else {\n            return newChannel(method, provider, family.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newDomainSocketChannel(Method method, SelectorProvider provider) throws IOException {\n        return newChannel(method, provider, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "600b7b3acfc84f67ef210cba7ee827178b4208ecefae5eec35b9a2be87314153", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "invert-conditions", "level": 6, "line_count": 61, "local_path": "expressions/invert-conditions/I06__netty__SelectorProviderUtil__be52e271.java", "order": 6, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 3}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-4493be52e271-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 917, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-744026c1dfcc-I07", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method findOpenMethod(String methodName) {\nif (((0x3799 ^ 0x3799) != 0)) { throw new AssertionError(); }\n\n        if (PlatformDependent.javaVersion() >= 15) {\n            try {\n                return SelectorProvider.class.getMethod(methodName, java.net.ProtocolFamily.class);\n            } catch (Throwable e) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", methodName, e);\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    Object family) throws IOException {\nif (((0xD8FF ^ 0xD8FF) != 0)) { throw new AssertionError(); }\n\n        if (family != null && method != null) {\n            try {\n                @SuppressWarnings(\"unchecked\")\n                C channel = (C) method.invoke(provider, family);\n                return channel;\n            } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    SocketProtocolFamily family) throws IOException {\nif (((0x6526 ^ 0x6526) != 0)) { throw new AssertionError(); }\n\n        if (family != null) {\n            return newChannel(method, provider, family.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newDomainSocketChannel(Method method, SelectorProvider provider) throws IOException {\nif (((0x12D6 ^ 0x12D6) != 0)) { throw new AssertionError(); }\n\n        return newChannel(method, provider, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() {\nif (((0x61AB ^ 0x61AB) != 0)) { throw new AssertionError(); }\n }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "35f3728b30dc97ec48776c792df5b20cfc02227bb6113ee55f96d308943afc30", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "insert-dead-branches", "level": 7, "line_count": 71, "local_path": "code-injection/insert-dead-branches/I07__netty__SelectorProviderUtil__26c1dfcc.java", "order": 7, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 5}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-744026c1dfcc-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 918, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-65e466fe9ef0-I08", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method findOpenMethod(String methodName) {\n        if (PlatformDependent.javaVersion() >= 15) {\n            try {\n                return SelectorProvider.class.getMethod(methodName, java.net.ProtocolFamily.class);\n            } catch (Throwable e) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", methodName, e);\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    Object family) throws IOException {\n        if (family != null && method != null) {\n            try {\n                @SuppressWarnings(\"unchecked\")\n                C channel = (C) method.invoke(provider, family);\n                return channel;\n            } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    SocketProtocolFamily family) throws IOException {\n{\n  int morningTemperature = 18;\n  int eveningTemperature = 14;\n  int lowerTemperature = morningTemperature;\n  if (eveningTemperature < lowerTemperature) {\n    lowerTemperature = eveningTemperature;\n  }\n}\n\n        if (family != null) {\n            return newChannel(method, provider, family.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newDomainSocketChannel(Method method, SelectorProvider provider) throws IOException {\n        return newChannel(method, provider, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "32329a2c750148e1fe2d4b4d73b5749ac5846d04b7258fa4ff78635c78957cda", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 70, "local_path": "code-injection/inject-readable-unrelated-code/I08__netty__SelectorProviderUtil__66fe9ef0.java", "order": 8, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 4}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-65e466fe9ef0-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 919, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a3161bcd1034-I09", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method findOpenMethod(String methodName) {\n        if (PlatformDependent.javaVersion() >= 15) {\n            try {\n                return SelectorProvider.class.getMethod(methodName, java.net.ProtocolFamily.class);\n            } catch (Throwable e) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", methodName, e);\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    Object family) throws IOException {\n        if (family != null && method != null) {\n            try {\n                @SuppressWarnings(\"unchecked\")\n                C channel = (C) method.invoke(provider, family);\n                return channel;\n            } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    SocketProtocolFamily family) throws IOException {\n{int lI0O_a8767aa7=0x328;lI0O_a8767aa7=(lI0O_a8767aa7<<1)^(lI0O_a8767aa7>>>1);lI0O_a8767aa7&=0;}\n\n        if (family != null) {\n            return newChannel(method, provider, family.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newDomainSocketChannel(Method method, SelectorProvider provider) throws IOException {\n        return newChannel(method, provider, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "50f5ba3d03f32adfc1e3c9fd47d663991f418eda836c638c12f09e266956dd0a", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 63, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__netty__SelectorProviderUtil__1bcd1034.java", "order": 9, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 3}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-a3161bcd1034-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 920, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a2ac1d5dfc79-I10", "source": "package io.netty.channel.socket.nio; import io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger; import io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException; import java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil { private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method findOpenMethod(String methodName) {\n        if (PlatformDependent.javaVersion() >= 15) { try {\n                return SelectorProvider.class.getMethod(methodName, java.net.ProtocolFamily.class);\n            } catch (Throwable e) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", methodName, e);\n            } }\n        return null;\n    } /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    Object family) throws IOException { if (family != null && method != null) { try {\n                @SuppressWarnings(\"unchecked\") C channel = (C) method.invoke(provider, family);\n                return channel; } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            } } return null;\n    }\n\n    static <C extends Channel> C newChannel(Method method, SelectorProvider provider, SocketProtocolFamily family) throws IOException { if (family != null) { return newChannel(method, provider, family.toJdkFamily()); }\n        return null;\n    }\n\n    static <C extends Channel> C newDomainSocketChannel(Method method, SelectorProvider provider) throws IOException {\n        return newChannel(method, provider, StandardProtocolFamily.valueOf(\"UNIX\")); } private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "fc2b0a505ef74ff814975d36c2c81326b8d435fdd06dc74b02bab9883d101d97", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "partially-compact-layout", "level": 10, "line_count": 40, "local_path": "layout/partially-compact-layout/I10__netty__SelectorProviderUtil__1d5dfc79.java", "order": 10, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 49, "line_break_groups_removed": 19, "line_breaks_removed": 21, "whitespace_characters_removed": 182}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-a2ac1d5dfc79-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 921, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5a7b0fe51749-I11", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method findOpenMethod(String methodName) {\n        final int a = 7;\n        final int b = 8;\n        if (PlatformDependent.javaVersion() >= (a + b)) {\n            try {\n                return SelectorProvider.class.getMethod(methodName, java.net.ProtocolFamily.class);\n            } catch (Throwable e) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", methodName, e);\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    Object family) throws IOException {\n        if (family != null && method != null) {\n            try {\n                @SuppressWarnings(\"unchecked\")\n                C channel = (C) method.invoke(provider, family);\n                return channel;\n            } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    SocketProtocolFamily family) throws IOException {\n        if (family != null) {\n            return newChannel(method, provider, family.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newDomainSocketChannel(Method method, SelectorProvider provider) throws IOException {\n        return newChannel(method, provider, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "4d370c177fb29824e355bb2c47865c0dd305d76351be8537b5670ba92897d90f", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 63, "local_path": "data-flow/introduce-numeric-intermediates/I11__netty__SelectorProviderUtil__0fe51749.java", "order": 11, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 1, "intermediate_variables_introduced": 2, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-5a7b0fe51749-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 922, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7cf4dc3d4fab-I12", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method findOpenMethod(String methodName) {\n        if (PlatformDependent.javaVersion() >= 15) {\n            try {\n                return SelectorProvider.class.getMethod(methodName, java.net.ProtocolFamily.class);\n            } catch (Throwable e) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", methodName, e);\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    Object family) throws IOException {\n        if (family != null && method != null) {\n            try {\n                \n                return ((C) method.invoke(provider, family));\n            } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    SocketProtocolFamily family) throws IOException {\n        if (family != null) {\n            return newChannel(method, provider, family.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newDomainSocketChannel(Method method, SelectorProvider provider) throws IOException {\n        return newChannel(method, provider, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "296a24545a4353490947ac605233c2e1c9ac4b88187e4900e62cdf66afb5b9a1", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 60, "local_path": "data-flow/inline-intermediate-variables/I12__netty__SelectorProviderUtil__dc3d4fab.java", "order": 12, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-7cf4dc3d4fab-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 923, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b163199e94ff-I13", "source": "package io.netty.channel.socket.nio;\nimport io.netty.channel.socket.SocketProtocolFamily;\nimport io.netty.util.internal.PlatformDependent;\nimport io.netty.util.internal.logging.InternalLogger;\nimport io.netty.util.internal.logging.InternalLoggerFactory;\nimport java.io.IOException;\nimport java.lang.reflect.InvocationTargetException;\nimport java.lang.reflect.Method;\nimport java.net.StandardProtocolFamily;\nimport java.nio.channels.Channel;\nimport java.nio.channels.SocketChannel;\nimport java.nio.channels.spi.SelectorProvider;\n\nfinal class SelectorProviderUtil {\n    private static final InternalLogger logger = InternalLoggerFactory.getInstance(SelectorProviderUtil.class);\n\n    static Method findOpenMethod(String methodName) {\n        if (PlatformDependent.javaVersion() >= 15) {\n            try {\n                return SelectorProvider.class.getMethod(methodName, java.net.ProtocolFamily.class);\n            } catch (Throwable e) {\n                logger.debug(\"SelectorProvider.{}(ProtocolFamily) not available, will use default\", methodName, e);\n            }\n        }\n        return null;\n    }\n\n    /**\n     * Use the {@link SelectorProvider} to open {@link SocketChannel} and so remove condition in\n     * {@link SelectorProvider#provider()} which is called by each SocketChannel.open() otherwise.\n     * <p>\n     * See <a href=\"https://github.com/netty/netty/issues/2308\">#2308</a>.\n     */\n    private static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    Object family) throws IOException {\n        if (family != null && method != null) {\n            try {\n                @SuppressWarnings(\"unchecked\")\n                C channel = (C) method.invoke(provider, family);\n                return channel;\n            } catch (InvocationTargetException | IllegalAccessException e) {\n                throw new IOException(e);\n            }\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newChannel(Method method, SelectorProvider provider,\n                                                    SocketProtocolFamily family) throws IOException {\n        if (family != null) {\n            return newChannel(method, provider, family.toJdkFamily());\n        }\n        return null;\n    }\n\n    static <C extends Channel> C newDomainSocketChannel(Method method, SelectorProvider provider) throws IOException {\n        return newChannel(method, provider, StandardProtocolFamily.valueOf(\"UNIX\"));\n    }\n\n    private SelectorProviderUtil() { }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__netty__SelectorProviderUtil__81eaf9fb.java", "base_sample_id": "source-c2a828cb87359aad", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "netty:transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java", "interference": "lower-for-to-while", "level": 13, "line_count": 61, "local_path": "control-flow/lower-for-to-while/I13__netty__SelectorProviderUtil__199e94ff.java", "order": 13, "original_content_sha256": "880077c5de8bdef7dfc0d6ff6241abc1f62bb3a6a28e123eff3f5ddbba2485cc", "parent_variant_id": "int-11eb81eaf9fb-SRC", "readability_direction": "decreasing", "source": "netty", "source_name": "Netty", "source_path": "transport/src/main/java/io/netty/channel/socket/nio/SelectorProviderUtil.java#L31-L78", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "SelectorProviderUtil", "variant_id": "int-b163199e94ff-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 924, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cd4f01154c2e-SRC", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t/**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */\n\tpublic RegexpMethodPointcutAdvisor() {\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */\n\tpublic RegexpMethodPointcutAdvisor(Advice advice) {\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String pattern, Advice advice) {\n\t\tsetPattern(pattern);\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String[] patterns, Advice advice) {\n\t\tsetPatterns(patterns);\n\t\tsetAdvice(advice);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void setPattern(String pattern) {\n\t\tsetPatterns(pattern);\n\t}\n\n\t/**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void setPatterns(String... patterns) {\n\t\tthis.patterns = patterns;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */\n\t@Override\n\tpublic Pointcut getPointcut() {\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (this.pointcut == null) {\n\t\t\t\tthis.pointcut = createPointcut();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */\n\tprotected AbstractRegexpMethodPointcut createPointcut() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": null, "level": 0, "line_count": 136, "local_path": "source-original/SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "order": 0, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-cd4f01154c2e-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1289, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8d0b7102527e-I01", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t\n\n\n\n\n\n\tpublic RegexpMethodPointcutAdvisor() {\n\t}\n\n\t\n\n\n\n\n\n\n\tpublic RegexpMethodPointcutAdvisor(Advice advice) {\n\t\tsetAdvice(advice);\n\t}\n\n\t\n\n\n\n\n\tpublic RegexpMethodPointcutAdvisor(String pattern, Advice advice) {\n\t\tsetPattern(pattern);\n\t\tsetAdvice(advice);\n\t}\n\n\t\n\n\n\n\n\tpublic RegexpMethodPointcutAdvisor(String[] patterns, Advice advice) {\n\t\tsetPatterns(patterns);\n\t\tsetAdvice(advice);\n\t}\n\n\n\t\n\n\n\n\n\tpublic void setPattern(String pattern) {\n\t\tsetPatterns(pattern);\n\t}\n\n\t\n\n\n\n\n\n\n\tpublic void setPatterns(String... patterns) {\n\t\tthis.patterns = patterns;\n\t}\n\n\n\t\n\n\n\t@Override\n\tpublic Pointcut getPointcut() {\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (this.pointcut == null) {\n\t\t\t\tthis.pointcut = createPointcut();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t\n\n\n\n\n\tprotected AbstractRegexpMethodPointcut createPointcut() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t\n\n\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "bbfc8b653f35b757a98fad0ae952bedbad942dbf140e3c748f126af4a8822e1f", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "remove-comments", "level": 1, "line_count": 136, "local_path": "comments/remove-comments/I01__spring-framework__RegexpMethodPointcutAdvisor__7102527e.java", "order": 1, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1960, "comments_removed": 10}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-8d0b7102527e-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1290, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ee524acc36f4-I02", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t/**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */\n\tpublic RegexpMethodPointcutAdvisor() {\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */\n\tpublic RegexpMethodPointcutAdvisor(Advice adv) {\n\t\tsetAdvice(adv);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String pat, Advice adv2) {\n\t\tset(pat);\n\t\tsetAdvice(adv2);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String[] pat2, Advice adv3) {\n\t\tset2(pat2);\n\t\tsetAdvice(adv3);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void set(String pat3) {\n\t\tset2(pat3);\n\t}\n\n\t/**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void set2(String... pat4) {\n\t\tthis.patterns = pat4;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */\n\t@Override\n\tpublic Pointcut get() {\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (this.pointcut == null) {\n\t\t\t\tthis.pointcut = create();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */\n\tprotected AbstractRegexpMethodPointcut create() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String to() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "33f0558f46b311d3e5ff0cff98adc49acabc8801302a4301db8f2c176bd490e8", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "shorten-identifiers", "level": 2, "line_count": 136, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__RegexpMethodPointcutAdvisor__4acc36f4.java", "order": 2, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 7, "local_name_collisions_avoided": 5, "method_calls_renamed": 4, "method_declarations_renamed": 5, "method_name_collisions_avoided": 1, "method_name_groups": 5}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-ee524acc36f4-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1291, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9ab99193b29b-I03", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t/**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */\n\tpublic RegexpMethodPointcutAdvisor() {\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */\n\tpublic RegexpMethodPointcutAdvisor(Advice option) {\n\t\tsetAdvice(option);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String message, Advice config) {\n\t\tparseScore(message);\n\t\tsetAdvice(config);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String[] nextPath, Advice window) {\n\t\tcheckRecord(nextPath);\n\t\tsetAdvice(window);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void parseScore(String summary) {\n\t\tcheckRecord(summary);\n\t}\n\n\t/**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void checkRecord(String... nextData) {\n\t\tthis.patterns = nextData;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */\n\t@Override\n\tpublic Pointcut updateIndex() {\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (this.pointcut == null) {\n\t\t\t\tthis.pointcut = validateClient();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */\n\tprotected AbstractRegexpMethodPointcut validateClient() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String readUser() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "d3e2cbd53ae73d970c71b372c50777b3e976fc7353b73ffd3ff0abc49a0daaa4", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "mislead-identifiers", "level": 3, "line_count": 136, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__RegexpMethodPointcutAdvisor__9193b29b.java", "order": 3, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 7, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 7, "local_random_pool_selections": 7, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 4, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 5, "method_exact_length_matches": 5, "method_name_groups": 5, "method_random_pool_selections": 5, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-9ab99193b29b-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1292, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0d620f550629-I04", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t/**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */\n\tpublic RegexpMethodPointcutAdvisor() {\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */\n\tpublic RegexpMethodPointcutAdvisor(Advice a) {\n\t\tsetAdvice(a);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String b, Advice c) {\n\t\ta(b);\n\t\tsetAdvice(c);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String[] d, Advice e) {\n\t\tb(d);\n\t\tsetAdvice(e);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void a(String f) {\n\t\tb(f);\n\t}\n\n\t/**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void b(String... g) {\n\t\tthis.patterns = g;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */\n\t@Override\n\tpublic Pointcut c() {\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (this.pointcut == null) {\n\t\t\t\tthis.pointcut = d();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */\n\tprotected AbstractRegexpMethodPointcut d() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String e() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "ea274dcda68b4f387c42ab6fa4dccaaf67fcd58e35f2851ffad4ad50dadad54f", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "garble-identifiers", "level": 4, "line_count": 136, "local_path": "identifiers/garble-identifiers/I04__spring-framework__RegexpMethodPointcutAdvisor__0f550629.java", "order": 4, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 7, "local_name_collisions_avoided": 0, "method_calls_renamed": 4, "method_declarations_renamed": 5, "method_name_collisions_avoided": 0, "method_name_groups": 5}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-0d620f550629-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1293, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5e5288c771df-I05", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t/**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */\n\tpublic RegexpMethodPointcutAdvisor() {\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */\n\tpublic RegexpMethodPointcutAdvisor(Advice advice) {\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String pattern, Advice advice) {\n\t\tsetPattern(pattern);\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String[] patterns, Advice advice) {\n\t\tsetPatterns(patterns);\n\t\tsetAdvice(advice);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void setPattern(String pattern) {\n\t\tsetPatterns(pattern);\n\t}\n\n\t/**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void setPatterns(String... patterns) {\n\t\tthis.patterns = patterns;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */\n\t@Override\n\tpublic Pointcut getPointcut() {\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (this.pointcut == null) {\n\t\t\t\tthis.pointcut = createPointcut();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */\n\tprotected AbstractRegexpMethodPointcut createPointcut() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "encode-integer-literals", "level": 5, "line_count": 136, "local_path": "expressions/encode-integer-literals/I05__spring-framework__RegexpMethodPointcutAdvisor__88c771df.java", "order": 5, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-5e5288c771df-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1294, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f8024c44cb26-I06", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t/**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */\n\tpublic RegexpMethodPointcutAdvisor() {\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */\n\tpublic RegexpMethodPointcutAdvisor(Advice advice) {\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String pattern, Advice advice) {\n\t\tsetPattern(pattern);\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String[] patterns, Advice advice) {\n\t\tsetPatterns(patterns);\n\t\tsetAdvice(advice);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void setPattern(String pattern) {\n\t\tsetPatterns(pattern);\n\t}\n\n\t/**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void setPatterns(String... patterns) {\n\t\tthis.patterns = patterns;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */\n\t@Override\n\tpublic Pointcut getPointcut() {\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (!((this.pointcut == null))) {} else {\n\t\t\t\tthis.pointcut = createPointcut();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */\n\tprotected AbstractRegexpMethodPointcut createPointcut() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "1924bb5567ec2d9daffca5715ee9f7a7812e59c0ad94f2b0e97fd2fd5c5c8792", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "invert-conditions", "level": 6, "line_count": 136, "local_path": "expressions/invert-conditions/I06__spring-framework__RegexpMethodPointcutAdvisor__4c44cb26.java", "order": 6, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-f8024c44cb26-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1295, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e6ee7dab071e-I07", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t/**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */\n\tpublic RegexpMethodPointcutAdvisor() {\nif (((0x656C ^ 0x656C) != 0)) { throw new AssertionError(); }\n\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */\n\tpublic RegexpMethodPointcutAdvisor(Advice advice) {\nif (((0xAACA ^ 0xAACA) != 0)) { throw new AssertionError(); }\n\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String pattern, Advice advice) {\nif (((0xB9F1 ^ 0xB9F1) != 0)) { throw new AssertionError(); }\n\n\t\tsetPattern(pattern);\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String[] patterns, Advice advice) {\nif (((0x5E18 ^ 0x5E18) != 0)) { throw new AssertionError(); }\n\n\t\tsetPatterns(patterns);\n\t\tsetAdvice(advice);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void setPattern(String pattern) {\nif (((0xA442 ^ 0xA442) != 0)) { throw new AssertionError(); }\n\n\t\tsetPatterns(pattern);\n\t}\n\n\t/**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void setPatterns(String... patterns) {\nif (((0x2F0C ^ 0x2F0C) != 0)) { throw new AssertionError(); }\n\n\t\tthis.patterns = patterns;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */\n\t@Override\n\tpublic Pointcut getPointcut() {\nif (((0xEE66 ^ 0xEE66) != 0)) { throw new AssertionError(); }\n\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (this.pointcut == null) {\n\t\t\t\tthis.pointcut = createPointcut();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */\n\tprotected AbstractRegexpMethodPointcut createPointcut() {\nif (((0x5BF8 ^ 0x5BF8) != 0)) { throw new AssertionError(); }\n\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String toString() {\nif (((0xB5F1 ^ 0xB5F1) != 0)) { throw new AssertionError(); }\n\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "7faedd6220b90e3769a8372a7be1eed258739df05193e2103cd9af80e2cbb006", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "insert-dead-branches", "level": 7, "line_count": 154, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__RegexpMethodPointcutAdvisor__7dab071e.java", "order": 7, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 9}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-e6ee7dab071e-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1296, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-84a6c92a7182-I08", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t/**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */\n\tpublic RegexpMethodPointcutAdvisor() {\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */\n\tpublic RegexpMethodPointcutAdvisor(Advice advice) {\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String pattern, Advice advice) {\n\t\tsetPattern(pattern);\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String[] patterns, Advice advice) {\n\t\tsetPatterns(patterns);\n\t\tsetAdvice(advice);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void setPattern(String pattern) {\n\t\tsetPatterns(pattern);\n\t}\n\n\t/**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void setPatterns(String... patterns) {\n{\n  boolean featureEnabled = false;\n  for (int toggleCount = 0; toggleCount < 3; toggleCount++) {\n    featureEnabled = !featureEnabled;\n  }\n}\n\n\t\tthis.patterns = patterns;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */\n\t@Override\n\tpublic Pointcut getPointcut() {\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (this.pointcut == null) {\n\t\t\t\tthis.pointcut = createPointcut();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */\n\tprotected AbstractRegexpMethodPointcut createPointcut() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ef4f0b8d6cbefa73037928f4603054936fb32f25d9e18755e737d0a1880b9fe0", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 143, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__RegexpMethodPointcutAdvisor__c92a7182.java", "order": 8, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 7}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-84a6c92a7182-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1297, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7cd1f1edc8fc-I09", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t/**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */\n\tpublic RegexpMethodPointcutAdvisor() {\n{int lI0O_90fd3623=0,lI0O_ea4c98fe=0;while(lI0O_ea4c98fe<2){lI0O_90fd3623^=(lI0O_ea4c98fe<<1)^0x5;lI0O_ea4c98fe++;}lI0O_90fd3623^=lI0O_90fd3623;}\n\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */\n\tpublic RegexpMethodPointcutAdvisor(Advice advice) {\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String pattern, Advice advice) {\n\t\tsetPattern(pattern);\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String[] patterns, Advice advice) {\n\t\tsetPatterns(patterns);\n\t\tsetAdvice(advice);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void setPattern(String pattern) {\n\t\tsetPatterns(pattern);\n\t}\n\n\t/**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void setPatterns(String... patterns) {\n\t\tthis.patterns = patterns;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */\n\t@Override\n\tpublic Pointcut getPointcut() {\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (this.pointcut == null) {\n\t\t\t\tthis.pointcut = createPointcut();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */\n\tprotected AbstractRegexpMethodPointcut createPointcut() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "dfc42493d55361f5dbdac83f60d36a6f44ed05b4b35dd3809078832f9b243681", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 138, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__RegexpMethodPointcutAdvisor__f1edc8fc.java", "order": 9, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 2}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-7cd1f1edc8fc-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1298, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a58646e66142-I10", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice; import org.jspecify.annotations.Nullable; import org.springframework.aop.Pointcut; import org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\") public class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut; private final Object pointcutMonitor = new SerializableMonitor(); /**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */ public RegexpMethodPointcutAdvisor() {\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */ public RegexpMethodPointcutAdvisor(Advice advice) { setAdvice(advice); }\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String pattern, Advice advice) { setPattern(pattern); setAdvice(advice); } /**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */ public RegexpMethodPointcutAdvisor(String[] patterns, Advice advice) {\n\t\tsetPatterns(patterns);\n\t\tsetAdvice(advice);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void setPattern(String pattern) {\n\t\tsetPatterns(pattern);\n\t} /**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void setPatterns(String... patterns) {\n\t\tthis.patterns = patterns;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */ @Override public Pointcut getPointcut() {\n\t\tsynchronized (this.pointcutMonitor) { if (this.pointcut == null) {\n\t\t\t\tthis.pointcut = createPointcut();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t} return this.pointcut; }\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */ protected AbstractRegexpMethodPointcut createPointcut() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override public String toString() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */ private static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "1fa2de02e197903d8c0aba60ac0bbcc1176e6bb459dbd994326a595bb6d25460", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "partially-compact-layout", "level": 10, "line_count": 107, "local_path": "layout/partially-compact-layout/I10__spring-framework__RegexpMethodPointcutAdvisor__46e66142.java", "order": 10, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 62, "line_break_groups_removed": 24, "line_breaks_removed": 29, "whitespace_characters_removed": 33}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-a58646e66142-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1299, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ff58eaed0fae-I11", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t/**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */\n\tpublic RegexpMethodPointcutAdvisor() {\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */\n\tpublic RegexpMethodPointcutAdvisor(Advice advice) {\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String pattern, Advice advice) {\n\t\tsetPattern(pattern);\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String[] patterns, Advice advice) {\n\t\tsetPatterns(patterns);\n\t\tsetAdvice(advice);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void setPattern(String pattern) {\n\t\tsetPatterns(pattern);\n\t}\n\n\t/**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void setPatterns(String... patterns) {\n\t\tthis.patterns = patterns;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */\n\t@Override\n\tpublic Pointcut getPointcut() {\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (this.pointcut == null) {\n\t\t\t\tthis.pointcut = createPointcut();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */\n\tprotected AbstractRegexpMethodPointcut createPointcut() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 136, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__RegexpMethodPointcutAdvisor__eaed0fae.java", "order": 11, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-ff58eaed0fae-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1300, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e73ecd3b8694-I12", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t/**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */\n\tpublic RegexpMethodPointcutAdvisor() {\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */\n\tpublic RegexpMethodPointcutAdvisor(Advice advice) {\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String pattern, Advice advice) {\n\t\tsetPattern(pattern);\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String[] patterns, Advice advice) {\n\t\tsetPatterns(patterns);\n\t\tsetAdvice(advice);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void setPattern(String pattern) {\n\t\tsetPatterns(pattern);\n\t}\n\n\t/**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void setPatterns(String... patterns) {\n\t\tthis.patterns = patterns;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */\n\t@Override\n\tpublic Pointcut getPointcut() {\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (this.pointcut == null) {\n\t\t\t\tthis.pointcut = createPointcut();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */\n\tprotected AbstractRegexpMethodPointcut createPointcut() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 136, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__RegexpMethodPointcutAdvisor__cd3b8694.java", "order": 12, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-e73ecd3b8694-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1301, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ed81c9c3f42b-I13", "source": "package org.springframework.aop.support;\nimport java.io.Serializable;\nimport org.aopalliance.aop.Advice;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.aop.Pointcut;\nimport org.springframework.util.ObjectUtils;\n\n/**\n * Convenient class for regexp method pointcuts that hold an Advice,\n * making them an {@link org.springframework.aop.Advisor}.\n *\n * <p>Configure this class using the \"pattern\" and \"patterns\"\n * pass-through properties. These are analogous to the pattern\n * and patterns properties of {@link AbstractRegexpMethodPointcut}.\n *\n * <p>Can delegate to any {@link AbstractRegexpMethodPointcut} subclass.\n * By default, {@link JdkRegexpMethodPointcut} will be used. To choose\n * a specific one, override the {@link #createPointcut} method.\n *\n * @author Rod Johnson\n * @author Juergen Hoeller\n * @see #setPattern\n * @see #setPatterns\n * @see JdkRegexpMethodPointcut\n */\n@SuppressWarnings(\"serial\")\npublic class RegexpMethodPointcutAdvisor extends AbstractGenericPointcutAdvisor {\n\n\tprivate String @Nullable [] patterns;\n\n\tprivate @Nullable AbstractRegexpMethodPointcut pointcut;\n\n\tprivate final Object pointcutMonitor = new SerializableMonitor();\n\n\n\t/**\n\t * Create an empty RegexpMethodPointcutAdvisor.\n\t * @see #setPattern\n\t * @see #setPatterns\n\t * @see #setAdvice\n\t */\n\tpublic RegexpMethodPointcutAdvisor() {\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * The pattern still needs to be specified afterwards.\n\t * @param advice the advice to use\n\t * @see #setPattern\n\t * @see #setPatterns\n\t */\n\tpublic RegexpMethodPointcutAdvisor(Advice advice) {\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param pattern the pattern to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String pattern, Advice advice) {\n\t\tsetPattern(pattern);\n\t\tsetAdvice(advice);\n\t}\n\n\t/**\n\t * Create a RegexpMethodPointcutAdvisor for the given advice.\n\t * @param patterns the patterns to use\n\t * @param advice the advice to use\n\t */\n\tpublic RegexpMethodPointcutAdvisor(String[] patterns, Advice advice) {\n\t\tsetPatterns(patterns);\n\t\tsetAdvice(advice);\n\t}\n\n\n\t/**\n\t * Set the regular expression defining methods to match.\n\t * <p>Use either this method or {@link #setPatterns}, not both.\n\t * @see #setPatterns\n\t */\n\tpublic void setPattern(String pattern) {\n\t\tsetPatterns(pattern);\n\t}\n\n\t/**\n\t * Set the regular expressions defining methods to match.\n\t * To be passed through to the pointcut implementation.\n\t * <p>Matching will be the union of all these; if any of the\n\t * patterns matches, the pointcut matches.\n\t * @see AbstractRegexpMethodPointcut#setPatterns\n\t */\n\tpublic void setPatterns(String... patterns) {\n\t\tthis.patterns = patterns;\n\t}\n\n\n\t/**\n\t * Initialize the singleton Pointcut held within this Advisor.\n\t */\n\t@Override\n\tpublic Pointcut getPointcut() {\n\t\tsynchronized (this.pointcutMonitor) {\n\t\t\tif (this.pointcut == null) {\n\t\t\t\tthis.pointcut = createPointcut();\n\t\t\t\tif (this.patterns != null) {\n\t\t\t\t\tthis.pointcut.setPatterns(this.patterns);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.pointcut;\n\t\t}\n\t}\n\n\t/**\n\t * Create the actual pointcut: By default, a {@link JdkRegexpMethodPointcut}\n\t * will be used.\n\t * @return the Pointcut instance (never {@code null})\n\t */\n\tprotected AbstractRegexpMethodPointcut createPointcut() {\n\t\treturn new JdkRegexpMethodPointcut();\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn getClass().getName() + \": advice [\" + getAdvice() +\n\t\t\t\t\"], pointcut patterns \" + ObjectUtils.nullSafeToString(this.patterns);\n\t}\n\n\n\t/**\n\t * Empty class used for a serializable monitor object.\n\t */\n\tprivate static class SerializableMonitor implements Serializable {\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__RegexpMethodPointcutAdvisor__01154c2e.java", "base_sample_id": "source-084ed1e32c42c9eb", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java", "interference": "lower-for-to-while", "level": 13, "line_count": 136, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__RegexpMethodPointcutAdvisor__c9c3f42b.java", "order": 13, "original_content_sha256": "4cfbf55385b9f286fd161d6cde9f3565b203cd09a84df643ea4355a558f58ba2", "parent_variant_id": "int-cd4f01154c2e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-aop/src/main/java/org/springframework/aop/support/RegexpMethodPointcutAdvisor.java#L27-L155", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "RegexpMethodPointcutAdvisor", "variant_id": "int-ed81c9c3f42b-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1302, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a6f135310183-SRC", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t/**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void setLazyInit(boolean lazyInit) {\n\t\tthis.lazyInit = lazyInit;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */\n\tpublic boolean isLazyInit() {\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean getLazyInit() {\n\t\treturn this.lazyInit;\n\t}\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void setAutowireMode(int autowireMode) {\n\t\tthis.autowireMode = autowireMode;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */\n\tpublic int getAutowireMode() {\n\t\treturn this.autowireMode;\n\t}\n\n\t/**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */\n\tpublic void setDependencyCheck(int dependencyCheck) {\n\t\tthis.dependencyCheck = dependencyCheck;\n\t}\n\n\t/**\n\t * Return the default dependency check code.\n\t */\n\tpublic int getDependencyCheck() {\n\t\treturn this.dependencyCheck;\n\t}\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void setInitMethodName(@Nullable String initMethodName) {\n\t\tthis.initMethodName = (StringUtils.hasText(initMethodName) ? initMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */\n\tpublic @Nullable String getInitMethodName() {\n\t\treturn this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void setDestroyMethodName(@Nullable String destroyMethodName) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(destroyMethodName) ? destroyMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */\n\tpublic @Nullable String getDestroyMethodName() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": null, "level": 0, "line_count": 128, "local_path": "source-original/SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "order": 0, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-a6f135310183-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1065, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-82a5326a64d3-I01", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n\n\n\n\n\n\n\n\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t\n\n\n\n\n\n\tpublic void setLazyInit(boolean lazyInit) {\n\t\tthis.lazyInit = lazyInit;\n\t}\n\n\t\n\n\n\n\n\tpublic boolean isLazyInit() {\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t\n\n\n\n\n\n\tpublic @Nullable Boolean getLazyInit() {\n\t\treturn this.lazyInit;\n\t}\n\n\t\n\n\n\n\n\n\n\n\n\tpublic void setAutowireMode(int autowireMode) {\n\t\tthis.autowireMode = autowireMode;\n\t}\n\n\t\n\n\n\tpublic int getAutowireMode() {\n\t\treturn this.autowireMode;\n\t}\n\n\t\n\n\n\n\n\n\tpublic void setDependencyCheck(int dependencyCheck) {\n\t\tthis.dependencyCheck = dependencyCheck;\n\t}\n\n\t\n\n\n\tpublic int getDependencyCheck() {\n\t\treturn this.dependencyCheck;\n\t}\n\n\t\n\n\n\n\n\n\n\tpublic void setInitMethodName(@Nullable String initMethodName) {\n\t\tthis.initMethodName = (StringUtils.hasText(initMethodName) ? initMethodName : null);\n\t}\n\n\t\n\n\n\tpublic @Nullable String getInitMethodName() {\n\t\treturn this.initMethodName;\n\t}\n\n\t\n\n\n\n\n\n\n\tpublic void setDestroyMethodName(@Nullable String destroyMethodName) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(destroyMethodName) ? destroyMethodName : null);\n\t}\n\n\t\n\n\n\tpublic @Nullable String getDestroyMethodName() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "a60b594251e5a896b7a3f9c20a6d297abb227ee6ab638445ad11c950e971997d", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "remove-comments", "level": 1, "line_count": 128, "local_path": "comments/remove-comments/I01__spring-framework__BeanDefinitionDefaults__326a64d3.java", "order": 1, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 2422, "comments_removed": 12}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-82a5326a64d3-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1066, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-601f9c016704-I02", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t/**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void set(boolean lazy) {\n\t\tthis.lazyInit = lazy;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */\n\tpublic boolean is() {\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean get() {\n\t\treturn this.lazyInit;\n\t}\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void set2(int autowire) {\n\t\tthis.autowireMode = autowire;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */\n\tpublic int get2() {\n\t\treturn this.autowireMode;\n\t}\n\n\t/**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */\n\tpublic void set3(int dependency) {\n\t\tthis.dependencyCheck = dependency;\n\t}\n\n\t/**\n\t * Return the default dependency check code.\n\t */\n\tpublic int get3() {\n\t\treturn this.dependencyCheck;\n\t}\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void set4(@Nullable String init) {\n\t\tthis.initMethodName = (StringUtils.hasText(init) ? init : null);\n\t}\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */\n\tpublic @Nullable String get4() {\n\t\treturn this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void set5(@Nullable String destroy) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(destroy) ? destroy : null);\n\t}\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */\n\tpublic @Nullable String get5() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "cb1e7ae7aff72b6e85603402dc6d65790f0db9651c6f42b0dd88304df42d4044", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "shorten-identifiers", "level": 2, "line_count": 128, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__BeanDefinitionDefaults__9c016704.java", "order": 2, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 11, "method_name_collisions_avoided": 8, "method_name_groups": 11}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-601f9c016704-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1067, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ed93027bb5bd-I03", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t/**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void buildRecord(boolean nextData) {\n\t\tthis.lazyInit = nextData;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */\n\tpublic boolean checkBatch() {\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean checkBuffer() {\n\t\treturn this.lazyInit;\n\t}\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void validateMessage(int primaryEvent) {\n\t\tthis.autowireMode = primaryEvent;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */\n\tpublic int validateAccount() {\n\t\treturn this.autowireMode;\n\t}\n\n\t/**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */\n\tpublic void validateRequest(int currentAccount) {\n\t\tthis.dependencyCheck = currentAccount;\n\t}\n\n\t/**\n\t * Return the default dependency check code.\n\t */\n\tpublic int validateBalance() {\n\t\treturn this.dependencyCheck;\n\t}\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void validateAddress(@Nullable String pendingBalance) {\n\t\tthis.initMethodName = (StringUtils.hasText(pendingBalance) ? pendingBalance : null);\n\t}\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */\n\tpublic @Nullable String validateSession() {\n\t\treturn this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void refreshAccount(@Nullable String primaryMessage) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(primaryMessage) ? primaryMessage : null);\n\t}\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */\n\tpublic @Nullable String validateRecord() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "48dd116b1907b5b70b946b5ec9d785fde93446b80488da2cfd5060789d26de58", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "mislead-identifiers", "level": 3, "line_count": 128, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__BeanDefinitionDefaults__027bb5bd.java", "order": 3, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 3, "local_random_pool_selections": 5, "local_total_length_difference": 4, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 22, "method_declarations_renamed": 11, "method_exact_length_matches": 5, "method_name_groups": 11, "method_random_pool_selections": 11, "method_total_length_difference": 22}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-ed93027bb5bd-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1068, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3a6493b3b4a4-I04", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t/**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void a(boolean a) {\n\t\tthis.lazyInit = a;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */\n\tpublic boolean b() {\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean c() {\n\t\treturn this.lazyInit;\n\t}\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void d(int b) {\n\t\tthis.autowireMode = b;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */\n\tpublic int e() {\n\t\treturn this.autowireMode;\n\t}\n\n\t/**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */\n\tpublic void f(int c) {\n\t\tthis.dependencyCheck = c;\n\t}\n\n\t/**\n\t * Return the default dependency check code.\n\t */\n\tpublic int g() {\n\t\treturn this.dependencyCheck;\n\t}\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void h(@Nullable String d) {\n\t\tthis.initMethodName = (StringUtils.hasText(d) ? d : null);\n\t}\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */\n\tpublic @Nullable String i() {\n\t\treturn this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void j(@Nullable String e) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(e) ? e : null);\n\t}\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */\n\tpublic @Nullable String k() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e4d54ad500378b6552f908f29957bb02096e1f0d90dfa21941e70a2dad20fb7c", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "garble-identifiers", "level": 4, "line_count": 128, "local_path": "identifiers/garble-identifiers/I04__spring-framework__BeanDefinitionDefaults__93b3b4a4.java", "order": 4, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 7, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 11, "method_name_collisions_avoided": 0, "method_name_groups": 11}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-3a6493b3b4a4-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1069, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9427e6d4a505-I05", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t/**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void setLazyInit(boolean lazyInit) {\n\t\tthis.lazyInit = lazyInit;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */\n\tpublic boolean isLazyInit() {\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean getLazyInit() {\n\t\treturn this.lazyInit;\n\t}\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void setAutowireMode(int autowireMode) {\n\t\tthis.autowireMode = autowireMode;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */\n\tpublic int getAutowireMode() {\n\t\treturn this.autowireMode;\n\t}\n\n\t/**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */\n\tpublic void setDependencyCheck(int dependencyCheck) {\n\t\tthis.dependencyCheck = dependencyCheck;\n\t}\n\n\t/**\n\t * Return the default dependency check code.\n\t */\n\tpublic int getDependencyCheck() {\n\t\treturn this.dependencyCheck;\n\t}\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void setInitMethodName(@Nullable String initMethodName) {\n\t\tthis.initMethodName = (StringUtils.hasText(initMethodName) ? initMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */\n\tpublic @Nullable String getInitMethodName() {\n\t\treturn this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void setDestroyMethodName(@Nullable String destroyMethodName) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(destroyMethodName) ? destroyMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */\n\tpublic @Nullable String getDestroyMethodName() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "encode-integer-literals", "level": 5, "line_count": 128, "local_path": "expressions/encode-integer-literals/I05__spring-framework__BeanDefinitionDefaults__e6d4a505.java", "order": 5, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-9427e6d4a505-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1070, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cd266e4051bb-I06", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t/**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void setLazyInit(boolean lazyInit) {\n\t\tthis.lazyInit = lazyInit;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */\n\tpublic boolean isLazyInit() {\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean getLazyInit() {\n\t\treturn this.lazyInit;\n\t}\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void setAutowireMode(int autowireMode) {\n\t\tthis.autowireMode = autowireMode;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */\n\tpublic int getAutowireMode() {\n\t\treturn this.autowireMode;\n\t}\n\n\t/**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */\n\tpublic void setDependencyCheck(int dependencyCheck) {\n\t\tthis.dependencyCheck = dependencyCheck;\n\t}\n\n\t/**\n\t * Return the default dependency check code.\n\t */\n\tpublic int getDependencyCheck() {\n\t\treturn this.dependencyCheck;\n\t}\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void setInitMethodName(@Nullable String initMethodName) {\n\t\tthis.initMethodName = (StringUtils.hasText(initMethodName) ? initMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */\n\tpublic @Nullable String getInitMethodName() {\n\t\treturn this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void setDestroyMethodName(@Nullable String destroyMethodName) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(destroyMethodName) ? destroyMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */\n\tpublic @Nullable String getDestroyMethodName() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "invert-conditions", "level": 6, "line_count": 128, "local_path": "expressions/invert-conditions/I06__spring-framework__BeanDefinitionDefaults__6e4051bb.java", "order": 6, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-cd266e4051bb-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1071, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-084c226c1de8-I07", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t/**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void setLazyInit(boolean lazyInit) {\nif (((0x8D7D ^ 0x8D7D) != 0)) { throw new AssertionError(); }\n\n\t\tthis.lazyInit = lazyInit;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */\n\tpublic boolean isLazyInit() {\nif (((0x23F4 ^ 0x23F4) != 0)) { throw new AssertionError(); }\n\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean getLazyInit() {\nif (((0x4BDE ^ 0x4BDE) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.lazyInit;\n\t}\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void setAutowireMode(int autowireMode) {\nif (((0xDA67 ^ 0xDA67) != 0)) { throw new AssertionError(); }\n\n\t\tthis.autowireMode = autowireMode;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */\n\tpublic int getAutowireMode() {\nif (((0x6C86 ^ 0x6C86) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.autowireMode;\n\t}\n\n\t/**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */\n\tpublic void setDependencyCheck(int dependencyCheck) {\nif (((0xB2B8 ^ 0xB2B8) != 0)) { throw new AssertionError(); }\n\n\t\tthis.dependencyCheck = dependencyCheck;\n\t}\n\n\t/**\n\t * Return the default dependency check code.\n\t */\n\tpublic int getDependencyCheck() {\nif (((0x85EB ^ 0x85EB) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.dependencyCheck;\n\t}\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void setInitMethodName(@Nullable String initMethodName) {\nif (((0xA57B ^ 0xA57B) != 0)) { throw new AssertionError(); }\n\n\t\tthis.initMethodName = (StringUtils.hasText(initMethodName) ? initMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */\n\tpublic @Nullable String getInitMethodName() {\nif (((0x6B94 ^ 0x6B94) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void setDestroyMethodName(@Nullable String destroyMethodName) {\nif (((0xA9FC ^ 0xA9FC) != 0)) { throw new AssertionError(); }\n\n\t\tthis.destroyMethodName = (StringUtils.hasText(destroyMethodName) ? destroyMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */\n\tpublic @Nullable String getDestroyMethodName() {\nif (((0x5BC4 ^ 0x5BC4) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "e1683e3074576247bebee49f29f21dc1ef1149119cbe823641d5b3c857b83578", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "insert-dead-branches", "level": 7, "line_count": 150, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__BeanDefinitionDefaults__226c1de8.java", "order": 7, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 11}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-084c226c1de8-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1072, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-99818a5b31ef-I08", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t/**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void setLazyInit(boolean lazyInit) {\n\t\tthis.lazyInit = lazyInit;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */\n\tpublic boolean isLazyInit() {\n{\n  int firstScore = 72;\n  int secondScore = 85;\n  int higherScore;\n  if (firstScore > secondScore) {\n    higherScore = firstScore;\n  } else {\n    higherScore = secondScore;\n  }\n}\n\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean getLazyInit() {\n\t\treturn this.lazyInit;\n\t}\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void setAutowireMode(int autowireMode) {\n\t\tthis.autowireMode = autowireMode;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */\n\tpublic int getAutowireMode() {\n\t\treturn this.autowireMode;\n\t}\n\n\t/**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */\n\tpublic void setDependencyCheck(int dependencyCheck) {\n\t\tthis.dependencyCheck = dependencyCheck;\n\t}\n\n\t/**\n\t * Return the default dependency check code.\n\t */\n\tpublic int getDependencyCheck() {\n\t\treturn this.dependencyCheck;\n\t}\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void setInitMethodName(@Nullable String initMethodName) {\n\t\tthis.initMethodName = (StringUtils.hasText(initMethodName) ? initMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */\n\tpublic @Nullable String getInitMethodName() {\n\t\treturn this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void setDestroyMethodName(@Nullable String destroyMethodName) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(destroyMethodName) ? destroyMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */\n\tpublic @Nullable String getDestroyMethodName() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "2db0e7fb31ab2e43b90335295881144233e03d6803d3b49bd28a0771db560c8e", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 139, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__BeanDefinitionDefaults__8a5b31ef.java", "order": 8, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 10, "readable_template_index": 3}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-99818a5b31ef-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1073, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-414fa9d7b380-I09", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t/**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void setLazyInit(boolean lazyInit) {\n\t\tthis.lazyInit = lazyInit;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */\n\tpublic boolean isLazyInit() {\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean getLazyInit() {\n\t\treturn this.lazyInit;\n\t}\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void setAutowireMode(int autowireMode) {\n\t\tthis.autowireMode = autowireMode;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */\n\tpublic int getAutowireMode() {\n\t\treturn this.autowireMode;\n\t}\n\n\t/**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */\n\tpublic void setDependencyCheck(int dependencyCheck) {\n\t\tthis.dependencyCheck = dependencyCheck;\n\t}\n\n\t/**\n\t * Return the default dependency check code.\n\t */\n\tpublic int getDependencyCheck() {\n{int lI0O_b11a1b76=0xCB8D;lI0O_b11a1b76=(lI0O_b11a1b76<<1)^(lI0O_b11a1b76>>>1);lI0O_b11a1b76&=0;}\n\n\t\treturn this.dependencyCheck;\n\t}\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void setInitMethodName(@Nullable String initMethodName) {\n\t\tthis.initMethodName = (StringUtils.hasText(initMethodName) ? initMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */\n\tpublic @Nullable String getInitMethodName() {\n\t\treturn this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void setDestroyMethodName(@Nullable String destroyMethodName) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(destroyMethodName) ? destroyMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */\n\tpublic @Nullable String getDestroyMethodName() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "343111342111598f4f02154ef13aa54626fc729315635f40e9ef471635986104", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 130, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__BeanDefinitionDefaults__a9d7b380.java", "order": 9, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 3}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-414fa9d7b380-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1074, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-71c1f554e7ee-I10", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils; /**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */ public class BeanDefinitionDefaults { private @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName; /**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void setLazyInit(boolean lazyInit) {\n\t\tthis.lazyInit = lazyInit;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */ public boolean isLazyInit() { return (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean getLazyInit() {\n\t\treturn this.lazyInit; }\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void setAutowireMode(int autowireMode) {\n\t\tthis.autowireMode = autowireMode;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */ public int getAutowireMode() { return this.autowireMode; } /**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */ public void setDependencyCheck(int dependencyCheck) {\n\t\tthis.dependencyCheck = dependencyCheck; }\n\n\t/**\n\t * Return the default dependency check code.\n\t */ public int getDependencyCheck() {\n\t\treturn this.dependencyCheck; }\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void setInitMethodName(@Nullable String initMethodName) { this.initMethodName = (StringUtils.hasText(initMethodName) ? initMethodName : null); }\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */ public @Nullable String getInitMethodName() { return this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void setDestroyMethodName(@Nullable String destroyMethodName) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(destroyMethodName) ? destroyMethodName : null); }\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */ public @Nullable String getDestroyMethodName() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "a4ea95407668f3472074acb39d3a7245c491b8bf1662c2b1f42d07c9eb8c31fb", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "partially-compact-layout", "level": 10, "line_count": 102, "local_path": "layout/partially-compact-layout/I10__spring-framework__BeanDefinitionDefaults__f554e7ee.java", "order": 10, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 54, "line_break_groups_removed": 21, "line_breaks_removed": 26, "whitespace_characters_removed": 28}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-71c1f554e7ee-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1075, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-94921e374604-I11", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t/**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void setLazyInit(boolean lazyInit) {\n\t\tthis.lazyInit = lazyInit;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */\n\tpublic boolean isLazyInit() {\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean getLazyInit() {\n\t\treturn this.lazyInit;\n\t}\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void setAutowireMode(int autowireMode) {\n\t\tthis.autowireMode = autowireMode;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */\n\tpublic int getAutowireMode() {\n\t\treturn this.autowireMode;\n\t}\n\n\t/**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */\n\tpublic void setDependencyCheck(int dependencyCheck) {\n\t\tthis.dependencyCheck = dependencyCheck;\n\t}\n\n\t/**\n\t * Return the default dependency check code.\n\t */\n\tpublic int getDependencyCheck() {\n\t\treturn this.dependencyCheck;\n\t}\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void setInitMethodName(@Nullable String initMethodName) {\n\t\tthis.initMethodName = (StringUtils.hasText(initMethodName) ? initMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */\n\tpublic @Nullable String getInitMethodName() {\n\t\treturn this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void setDestroyMethodName(@Nullable String destroyMethodName) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(destroyMethodName) ? destroyMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */\n\tpublic @Nullable String getDestroyMethodName() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 128, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__BeanDefinitionDefaults__1e374604.java", "order": 11, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-94921e374604-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1076, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e86b63c652d0-I12", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t/**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void setLazyInit(boolean lazyInit) {\n\t\tthis.lazyInit = lazyInit;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */\n\tpublic boolean isLazyInit() {\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean getLazyInit() {\n\t\treturn this.lazyInit;\n\t}\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void setAutowireMode(int autowireMode) {\n\t\tthis.autowireMode = autowireMode;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */\n\tpublic int getAutowireMode() {\n\t\treturn this.autowireMode;\n\t}\n\n\t/**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */\n\tpublic void setDependencyCheck(int dependencyCheck) {\n\t\tthis.dependencyCheck = dependencyCheck;\n\t}\n\n\t/**\n\t * Return the default dependency check code.\n\t */\n\tpublic int getDependencyCheck() {\n\t\treturn this.dependencyCheck;\n\t}\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void setInitMethodName(@Nullable String initMethodName) {\n\t\tthis.initMethodName = (StringUtils.hasText(initMethodName) ? initMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */\n\tpublic @Nullable String getInitMethodName() {\n\t\treturn this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void setDestroyMethodName(@Nullable String destroyMethodName) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(destroyMethodName) ? destroyMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */\n\tpublic @Nullable String getDestroyMethodName() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 128, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__BeanDefinitionDefaults__63c652d0.java", "order": 12, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-e86b63c652d0-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1077, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-495e5c28966a-I13", "source": "package org.springframework.beans.factory.support;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * A simple holder for {@code BeanDefinition} property defaults.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 2.5\n * @see AbstractBeanDefinition#applyDefaults\n */\npublic class BeanDefinitionDefaults {\n\n\tprivate @Nullable Boolean lazyInit;\n\n\tprivate int autowireMode = AbstractBeanDefinition.AUTOWIRE_NO;\n\n\tprivate int dependencyCheck = AbstractBeanDefinition.DEPENDENCY_CHECK_NONE;\n\n\tprivate @Nullable String initMethodName;\n\n\tprivate @Nullable String destroyMethodName;\n\n\n\t/**\n\t * Set whether beans should be lazily initialized by default.\n\t * <p>If {@code false}, the bean will get instantiated on startup by bean\n\t * factories that perform eager initialization of singletons.\n\t * @see AbstractBeanDefinition#setLazyInit\n\t */\n\tpublic void setLazyInit(boolean lazyInit) {\n\t\tthis.lazyInit = lazyInit;\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return whether to apply lazy-init semantics ({@code false} by default)\n\t */\n\tpublic boolean isLazyInit() {\n\t\treturn (this.lazyInit != null && this.lazyInit);\n\t}\n\n\t/**\n\t * Return whether beans should be lazily initialized by default, i.e. not\n\t * eagerly instantiated on startup. Only applicable to singleton beans.\n\t * @return the lazy-init flag if explicitly set, or {@code null} otherwise\n\t * @since 5.2\n\t */\n\tpublic @Nullable Boolean getLazyInit() {\n\t\treturn this.lazyInit;\n\t}\n\n\t/**\n\t * Set the autowire mode. This determines whether any automagical detection\n\t * and setting of bean references will happen. Default is AUTOWIRE_NO\n\t * which means there won't be convention-based autowiring by name or type\n\t * (however, there may still be explicit annotation-driven autowiring).\n\t * @param autowireMode the autowire mode to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setAutowireMode\n\t */\n\tpublic void setAutowireMode(int autowireMode) {\n\t\tthis.autowireMode = autowireMode;\n\t}\n\n\t/**\n\t * Return the default autowire mode.\n\t */\n\tpublic int getAutowireMode() {\n\t\treturn this.autowireMode;\n\t}\n\n\t/**\n\t * Set the dependency check code.\n\t * @param dependencyCheck the code to set.\n\t * Must be one of the constants defined in {@link AbstractBeanDefinition}.\n\t * @see AbstractBeanDefinition#setDependencyCheck\n\t */\n\tpublic void setDependencyCheck(int dependencyCheck) {\n\t\tthis.dependencyCheck = dependencyCheck;\n\t}\n\n\t/**\n\t * Return the default dependency check code.\n\t */\n\tpublic int getDependencyCheck() {\n\t\treturn this.dependencyCheck;\n\t}\n\n\t/**\n\t * Set the name of the default initializer method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setInitMethodName\n\t * @see AbstractBeanDefinition#setEnforceInitMethod\n\t */\n\tpublic void setInitMethodName(@Nullable String initMethodName) {\n\t\tthis.initMethodName = (StringUtils.hasText(initMethodName) ? initMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default initializer method.\n\t */\n\tpublic @Nullable String getInitMethodName() {\n\t\treturn this.initMethodName;\n\t}\n\n\t/**\n\t * Set the name of the default destroy method.\n\t * <p>Note that this method is not enforced on all affected bean definitions\n\t * but rather taken as an optional callback, to be invoked if actually present.\n\t * @see AbstractBeanDefinition#setDestroyMethodName\n\t * @see AbstractBeanDefinition#setEnforceDestroyMethod\n\t */\n\tpublic void setDestroyMethodName(@Nullable String destroyMethodName) {\n\t\tthis.destroyMethodName = (StringUtils.hasText(destroyMethodName) ? destroyMethodName : null);\n\t}\n\n\t/**\n\t * Return the name of the default destroy method.\n\t */\n\tpublic @Nullable String getDestroyMethodName() {\n\t\treturn this.destroyMethodName;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__BeanDefinitionDefaults__35310183.java", "base_sample_id": "source-6d106100e602218d", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java", "interference": "lower-for-to-while", "level": 13, "line_count": 128, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__BeanDefinitionDefaults__5c28966a.java", "order": 13, "original_content_sha256": "b50103a43a10d46eb9be15166ff5e0de7553d3f776c34d52f3207076cbaf3386", "parent_variant_id": "int-a6f135310183-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionDefaults.java#L23-L146", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "BeanDefinitionDefaults", "variant_id": "int-495e5c28966a-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1078, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-aa949608cc02-SRC", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, KeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.keyGenerator = target;\n\t}\n\n\t/**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, CacheKeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.cacheKeyGenerator = target;\n\t}\n\n\n\t/**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object getTarget() {\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\tJCacheOperation<?> operation = this.cacheOperationSource.getCacheOperation(method, target.getClass());\n\t\tif (!(operation instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + operation);\n\t\t}\n\t\tCacheKeyInvocationContext<?> invocationContext = createCacheKeyInvocationContext(target, operation, params);\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(invocationContext);\n\t\t}\n\t\telse {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn doGenerate(this.keyGenerator, invocationContext);\n\t\t}\n\t}\n\n\tprivate static Object doGenerate(KeyGenerator keyGenerator, CacheKeyInvocationContext<?> context) {\n\t\tList<Object> parameters = new ArrayList<>();\n\t\tfor (CacheInvocationParameter param : context.getKeyParameters()) {\n\t\t\tObject value = param.getValue();\n\t\t\tif (param.getParameterPosition() == context.getAllParameters().length - 1 &&\n\t\t\t\t\tcontext.getMethod().isVarArgs()) {\n\t\t\t\tparameters.addAll(CollectionUtils.arrayToList(value));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparameters.add(value);\n\t\t\t}\n\t\t}\n\t\treturn keyGenerator.generate(context.getTarget(), context.getMethod(), parameters.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> createCacheKeyInvocationContext(\n\t\t\tObject target, JCacheOperation<?> operation, @Nullable Object[] params) {\n\n\t\tAbstractJCacheKeyOperation<Annotation> keyCacheOperation = (AbstractJCacheKeyOperation<Annotation>) operation;\n\t\treturn new DefaultCacheKeyInvocationContext<>(keyCacheOperation, target, params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": null, "level": 0, "line_count": 107, "local_path": "source-original/SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "order": 0, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-aa949608cc02-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1149, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b7349a111c7f-I01", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n\n\n\n\n\n\n\n\n\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t\n\n\n\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, KeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.keyGenerator = target;\n\t}\n\n\t\n\n\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, CacheKeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.cacheKeyGenerator = target;\n\t}\n\n\n\t\n\n\n\n\tpublic Object getTarget() {\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\tJCacheOperation<?> operation = this.cacheOperationSource.getCacheOperation(method, target.getClass());\n\t\tif (!(operation instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + operation);\n\t\t}\n\t\tCacheKeyInvocationContext<?> invocationContext = createCacheKeyInvocationContext(target, operation, params);\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(invocationContext);\n\t\t}\n\t\telse {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn doGenerate(this.keyGenerator, invocationContext);\n\t\t}\n\t}\n\n\tprivate static Object doGenerate(KeyGenerator keyGenerator, CacheKeyInvocationContext<?> context) {\n\t\tList<Object> parameters = new ArrayList<>();\n\t\tfor (CacheInvocationParameter param : context.getKeyParameters()) {\n\t\t\tObject value = param.getValue();\n\t\t\tif (param.getParameterPosition() == context.getAllParameters().length - 1 &&\n\t\t\t\t\tcontext.getMethod().isVarArgs()) {\n\t\t\t\tparameters.addAll(CollectionUtils.arrayToList(value));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparameters.add(value);\n\t\t\t}\n\t\t}\n\t\treturn keyGenerator.generate(context.getTarget(), context.getMethod(), parameters.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> createCacheKeyInvocationContext(\n\t\t\tObject target, JCacheOperation<?> operation, @Nullable Object[] params) {\n\n\t\tAbstractJCacheKeyOperation<Annotation> keyCacheOperation = (AbstractJCacheKeyOperation<Annotation>) operation;\n\t\treturn new DefaultCacheKeyInvocationContext<>(keyCacheOperation, target, params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "b85e884a6d0b0a2e973dd328819c4ceac546373f44d066198e7a68bb1b03c075", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "remove-comments", "level": 1, "line_count": 107, "local_path": "comments/remove-comments/I01__spring-framework__KeyGeneratorAdapter__9a111c7f.java", "order": 1, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 736, "comments_removed": 4}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-b7349a111c7f-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1150, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8c9e0b56eed9-I02", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cache2, KeyGenerator tar) {\n\t\tAssert.notNull(cache2, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(tar, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cache2;\n\t\tthis.keyGenerator = tar;\n\t}\n\n\t/**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cache3, CacheKeyGenerator tar2) {\n\t\tAssert.notNull(cache3, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(tar2, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cache3;\n\t\tthis.cacheKeyGenerator = tar2;\n\t}\n\n\n\t/**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object get() {\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object gen(Object tar3, Method met, @Nullable Object... par) {\n\t\tJCacheOperation<?> ope = this.cacheOperationSource.getCacheOperation(met, tar3.getClass());\n\t\tif (!(ope instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + ope);\n\t\t}\n\t\tCacheKeyInvocationContext<?> invocation = create(tar3, ope, par);\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(invocation);\n\t\t}\n\t\telse {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn do2(this.keyGenerator, invocation);\n\t\t}\n\t}\n\n\tprivate static Object do2(KeyGenerator key, CacheKeyInvocationContext<?> con) {\n\t\tList<Object> par2 = new ArrayList<>();\n\t\tfor (CacheInvocationParameter par3 : con.getKeyParameters()) {\n\t\t\tObject val = par3.getValue();\n\t\t\tif (par3.getParameterPosition() == con.getAllParameters().length - 1 &&\n\t\t\t\t\tcon.getMethod().isVarArgs()) {\n\t\t\t\tpar2.addAll(CollectionUtils.arrayToList(val));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tpar2.add(val);\n\t\t\t}\n\t\t}\n\t\treturn key.generate(con.getTarget(), con.getMethod(), par2.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> create(\n\t\t\tObject tar4, JCacheOperation<?> ope2, @Nullable Object[] par4) {\n\n\t\tAbstractJCacheKeyOperation<Annotation> key2 = (AbstractJCacheKeyOperation<Annotation>) ope2;\n\t\treturn new DefaultCacheKeyInvocationContext<>(key2, tar4, par4);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "37ae928dc27e0253d360e3f5b989bfc53b27af10c334dbef0cab8030a43937b8", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "shorten-identifiers", "level": 2, "line_count": 107, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__KeyGeneratorAdapter__0b56eed9.java", "order": 2, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 34, "identifiers_declared": 18, "local_name_collisions_avoided": 10, "method_calls_renamed": 2, "method_declarations_renamed": 4, "method_name_collisions_avoided": 1, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-8c9e0b56eed9-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1151, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c04c89cb0c3f-I03", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource primaryRequest, KeyGenerator option) {\n\t\tAssert.notNull(primaryRequest, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(option, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = primaryRequest;\n\t\tthis.keyGenerator = option;\n\t}\n\n\t/**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource defaultBalance, CacheKeyGenerator buffer) {\n\t\tAssert.notNull(defaultBalance, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(buffer, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = defaultBalance;\n\t\tthis.cacheKeyGenerator = buffer;\n\t}\n\n\n\t/**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object buildData() {\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object readData(Object region, Method source, @Nullable Object... result) {\n\t\tJCacheOperation<?> finalMode = this.cacheOperationSource.getCacheOperation(source, region.getClass());\n\t\tif (!(finalMode instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + finalMode);\n\t\t}\n\t\tCacheKeyInvocationContext<?> primaryMessage = validateRequest(region, finalMode, result);\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(primaryMessage);\n\t\t}\n\t\telse {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn createUser(this.keyGenerator, primaryMessage);\n\t\t}\n\t}\n\n\tprivate static Object createUser(KeyGenerator backupWindow, CacheKeyInvocationContext<?> feature) {\n\t\tList<Object> finalBatch = new ArrayList<>();\n\t\tfor (CacheInvocationParameter entry : feature.getKeyParameters()) {\n\t\t\tObject score = entry.getValue();\n\t\t\tif (entry.getParameterPosition() == feature.getAllParameters().length - 1 &&\n\t\t\t\t\tfeature.getMethod().isVarArgs()) {\n\t\t\t\tfinalBatch.addAll(CollectionUtils.arrayToList(score));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfinalBatch.add(score);\n\t\t\t}\n\t\t}\n\t\treturn backupWindow.generate(feature.getTarget(), feature.getMethod(), finalBatch.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> validateRequest(\n\t\t\tObject client, JCacheOperation<?> nextCache, @Nullable Object[] offset) {\n\n\t\tAbstractJCacheKeyOperation<Annotation> currentMessage = (AbstractJCacheKeyOperation<Annotation>) nextCache;\n\t\treturn new DefaultCacheKeyInvocationContext<>(currentMessage, client, offset);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "1c36057cb9dba80b8c67227722bcaa054e579903e9b1ae799986a38b7a12a2e5", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "mislead-identifiers", "level": 3, "line_count": 107, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__KeyGeneratorAdapter__89cb0c3f.java", "order": 3, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 34, "identifiers_declared": 18, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 3, "local_exact_length_matches": 14, "local_random_pool_selections": 18, "local_total_length_difference": 18, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 2, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 3, "method_name_groups": 4, "method_random_pool_selections": 4, "method_total_length_difference": 16}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-c04c89cb0c3f-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1152, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ec1fe4e268c4-I04", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource a, KeyGenerator b) {\n\t\tAssert.notNull(a, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(b, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = a;\n\t\tthis.keyGenerator = b;\n\t}\n\n\t/**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource c, CacheKeyGenerator d) {\n\t\tAssert.notNull(c, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(d, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = c;\n\t\tthis.cacheKeyGenerator = d;\n\t}\n\n\n\t/**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object a() {\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object b(Object e, Method f, @Nullable Object... g) {\n\t\tJCacheOperation<?> h = this.cacheOperationSource.getCacheOperation(f, e.getClass());\n\t\tif (!(h instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + h);\n\t\t}\n\t\tCacheKeyInvocationContext<?> i = d(e, h, g);\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(i);\n\t\t}\n\t\telse {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn c(this.keyGenerator, i);\n\t\t}\n\t}\n\n\tprivate static Object c(KeyGenerator j, CacheKeyInvocationContext<?> k) {\n\t\tList<Object> l = new ArrayList<>();\n\t\tfor (CacheInvocationParameter m : k.getKeyParameters()) {\n\t\t\tObject n = m.getValue();\n\t\t\tif (m.getParameterPosition() == k.getAllParameters().length - 1 &&\n\t\t\t\t\tk.getMethod().isVarArgs()) {\n\t\t\t\tl.addAll(CollectionUtils.arrayToList(n));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tl.add(n);\n\t\t\t}\n\t\t}\n\t\treturn j.generate(k.getTarget(), k.getMethod(), l.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> d(\n\t\t\tObject o, JCacheOperation<?> p, @Nullable Object[] q) {\n\n\t\tAbstractJCacheKeyOperation<Annotation> r = (AbstractJCacheKeyOperation<Annotation>) p;\n\t\treturn new DefaultCacheKeyInvocationContext<>(r, o, q);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "3a6fce25177fbde92c69e43570e8fd91e9b66acdb325599b855e2b61f8d6e7aa", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "garble-identifiers", "level": 4, "line_count": 107, "local_path": "identifiers/garble-identifiers/I04__spring-framework__KeyGeneratorAdapter__e4e268c4.java", "order": 4, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 34, "identifiers_declared": 18, "local_name_collisions_avoided": 0, "method_calls_renamed": 2, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-ec1fe4e268c4-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1153, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-91744f7cc7ab-I05", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, KeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.keyGenerator = target;\n\t}\n\n\t/**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, CacheKeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.cacheKeyGenerator = target;\n\t}\n\n\n\t/**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object getTarget() {\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\tJCacheOperation<?> operation = this.cacheOperationSource.getCacheOperation(method, target.getClass());\n\t\tif (!(operation instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + operation);\n\t\t}\n\t\tCacheKeyInvocationContext<?> invocationContext = createCacheKeyInvocationContext(target, operation, params);\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(invocationContext);\n\t\t}\n\t\telse {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn doGenerate(this.keyGenerator, invocationContext);\n\t\t}\n\t}\n\n\tprivate static Object doGenerate(KeyGenerator keyGenerator, CacheKeyInvocationContext<?> context) {\n\t\tList<Object> parameters = new ArrayList<>();\n\t\tfor (CacheInvocationParameter param : context.getKeyParameters()) {\n\t\t\tObject value = param.getValue();\n\t\t\tif (param.getParameterPosition() == context.getAllParameters().length - 0x1 &&\n\t\t\t\t\tcontext.getMethod().isVarArgs()) {\n\t\t\t\tparameters.addAll(CollectionUtils.arrayToList(value));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparameters.add(value);\n\t\t\t}\n\t\t}\n\t\treturn keyGenerator.generate(context.getTarget(), context.getMethod(), parameters.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> createCacheKeyInvocationContext(\n\t\t\tObject target, JCacheOperation<?> operation, @Nullable Object[] params) {\n\n\t\tAbstractJCacheKeyOperation<Annotation> keyCacheOperation = (AbstractJCacheKeyOperation<Annotation>) operation;\n\t\treturn new DefaultCacheKeyInvocationContext<>(keyCacheOperation, target, params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "a6686a80daad3d45948dc6afa201a7736996a4b0f8f16bdb01ac4d574bf5ac69", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "encode-integer-literals", "level": 5, "line_count": 107, "local_path": "expressions/encode-integer-literals/I05__spring-framework__KeyGeneratorAdapter__4f7cc7ab.java", "order": 5, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-91744f7cc7ab-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1154, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5738c6b5c269-I06", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, KeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.keyGenerator = target;\n\t}\n\n\t/**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, CacheKeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.cacheKeyGenerator = target;\n\t}\n\n\n\t/**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object getTarget() {\n\t\tif (!((this.cacheKeyGenerator != null))) {} else {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\tJCacheOperation<?> operation = this.cacheOperationSource.getCacheOperation(method, target.getClass());\n\t\tif (!((!(operation instanceof AbstractJCacheKeyOperation)))) {} else {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + operation);\n\t\t}\n\t\tCacheKeyInvocationContext<?> invocationContext = createCacheKeyInvocationContext(target, operation, params);\n\n\t\tif (!((this.cacheKeyGenerator != null))) {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn doGenerate(this.keyGenerator, invocationContext);\n\t\t} else {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(invocationContext);\n\t\t}\n\t}\n\n\tprivate static Object doGenerate(KeyGenerator keyGenerator, CacheKeyInvocationContext<?> context) {\n\t\tList<Object> parameters = new ArrayList<>();\n\t\tfor (CacheInvocationParameter param : context.getKeyParameters()) {\n\t\t\tObject value = param.getValue();\n\t\t\tif (!((param.getParameterPosition() == context.getAllParameters().length - 1 &&\n\t\t\t\t\tcontext.getMethod().isVarArgs()))) {\n\t\t\t\tparameters.add(value);\n\t\t\t} else {\n\t\t\t\tparameters.addAll(CollectionUtils.arrayToList(value));\n\t\t\t}\n\t\t}\n\t\treturn keyGenerator.generate(context.getTarget(), context.getMethod(), parameters.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> createCacheKeyInvocationContext(\n\t\t\tObject target, JCacheOperation<?> operation, @Nullable Object[] params) {\n\n\t\tAbstractJCacheKeyOperation<Annotation> keyCacheOperation = (AbstractJCacheKeyOperation<Annotation>) operation;\n\t\treturn new DefaultCacheKeyInvocationContext<>(keyCacheOperation, target, params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "04b6995c09e2d66ca9b8821def441f2e2e9646dd5ba635ecb344323d270ac600", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "invert-conditions", "level": 6, "line_count": 105, "local_path": "expressions/invert-conditions/I06__spring-framework__KeyGeneratorAdapter__c6b5c269.java", "order": 6, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 4}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-5738c6b5c269-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1155, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-baf00d76f4ff-I07", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, KeyGenerator target) {\nif (((0x344 ^ 0x344) != 0)) { throw new AssertionError(); }\n\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.keyGenerator = target;\n\t}\n\n\t/**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, CacheKeyGenerator target) {\nif (((0xC734 ^ 0xC734) != 0)) { throw new AssertionError(); }\n\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.cacheKeyGenerator = target;\n\t}\n\n\n\t/**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object getTarget() {\nif (((0xE914 ^ 0xE914) != 0)) { throw new AssertionError(); }\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\nif (((0xDF27 ^ 0xDF27) != 0)) { throw new AssertionError(); }\n\n\t\tJCacheOperation<?> operation = this.cacheOperationSource.getCacheOperation(method, target.getClass());\n\t\tif (!(operation instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + operation);\n\t\t}\n\t\tCacheKeyInvocationContext<?> invocationContext = createCacheKeyInvocationContext(target, operation, params);\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(invocationContext);\n\t\t}\n\t\telse {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn doGenerate(this.keyGenerator, invocationContext);\n\t\t}\n\t}\n\n\tprivate static Object doGenerate(KeyGenerator keyGenerator, CacheKeyInvocationContext<?> context) {\nif (((0x3B2F ^ 0x3B2F) != 0)) { throw new AssertionError(); }\n\n\t\tList<Object> parameters = new ArrayList<>();\n\t\tfor (CacheInvocationParameter param : context.getKeyParameters()) {\n\t\t\tObject value = param.getValue();\n\t\t\tif (param.getParameterPosition() == context.getAllParameters().length - 1 &&\n\t\t\t\t\tcontext.getMethod().isVarArgs()) {\n\t\t\t\tparameters.addAll(CollectionUtils.arrayToList(value));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparameters.add(value);\n\t\t\t}\n\t\t}\n\t\treturn keyGenerator.generate(context.getTarget(), context.getMethod(), parameters.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> createCacheKeyInvocationContext(\n\t\t\tObject target, JCacheOperation<?> operation, @Nullable Object[] params) {\nif (((0x498B ^ 0x498B) != 0)) { throw new AssertionError(); }\n\n\n\t\tAbstractJCacheKeyOperation<Annotation> keyCacheOperation = (AbstractJCacheKeyOperation<Annotation>) operation;\n\t\treturn new DefaultCacheKeyInvocationContext<>(keyCacheOperation, target, params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "8ba37a9b3b5bbfce99acd75950d516f8353ca23c52b24c336661fcfac4ba3bc8", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "insert-dead-branches", "level": 7, "line_count": 119, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__KeyGeneratorAdapter__0d76f4ff.java", "order": 7, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 6}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-baf00d76f4ff-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1156, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5946df404c78-I08", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, KeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.keyGenerator = target;\n\t}\n\n\t/**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, CacheKeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.cacheKeyGenerator = target;\n\t}\n\n\n\t/**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object getTarget() {\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\tJCacheOperation<?> operation = this.cacheOperationSource.getCacheOperation(method, target.getClass());\n\t\tif (!(operation instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + operation);\n\t\t}\n\t\tCacheKeyInvocationContext<?> invocationContext = createCacheKeyInvocationContext(target, operation, params);\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(invocationContext);\n\t\t}\n\t\telse {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn doGenerate(this.keyGenerator, invocationContext);\n\t\t}\n\t}\n\n\tprivate static Object doGenerate(KeyGenerator keyGenerator, CacheKeyInvocationContext<?> context) {\n{\n  int morningTemperature = 18;\n  int eveningTemperature = 14;\n  int lowerTemperature = morningTemperature;\n  if (eveningTemperature < lowerTemperature) {\n    lowerTemperature = eveningTemperature;\n  }\n}\n\n\t\tList<Object> parameters = new ArrayList<>();\n\t\tfor (CacheInvocationParameter param : context.getKeyParameters()) {\n\t\t\tObject value = param.getValue();\n\t\t\tif (param.getParameterPosition() == context.getAllParameters().length - 1 &&\n\t\t\t\t\tcontext.getMethod().isVarArgs()) {\n\t\t\t\tparameters.addAll(CollectionUtils.arrayToList(value));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparameters.add(value);\n\t\t\t}\n\t\t}\n\t\treturn keyGenerator.generate(context.getTarget(), context.getMethod(), parameters.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> createCacheKeyInvocationContext(\n\t\t\tObject target, JCacheOperation<?> operation, @Nullable Object[] params) {\n\n\t\tAbstractJCacheKeyOperation<Annotation> keyCacheOperation = (AbstractJCacheKeyOperation<Annotation>) operation;\n\t\treturn new DefaultCacheKeyInvocationContext<>(keyCacheOperation, target, params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "58d89f9390bc273e786147694dbcf63a9650fc3620a8e624e354f48e03fdcfc3", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 116, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__KeyGeneratorAdapter__df404c78.java", "order": 8, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 4}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-5946df404c78-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1157, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-18ec5bbec5aa-I09", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, KeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.keyGenerator = target;\n\t}\n\n\t/**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, CacheKeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.cacheKeyGenerator = target;\n\t}\n\n\n\t/**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object getTarget() {\n{int lI0O_5dcdeb87=0x72A5;lI0O_5dcdeb87=((lI0O_5dcdeb87&0)==0)?(((lI0O_5dcdeb87^lI0O_5dcdeb87)==0)?0:1):2;}\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\tJCacheOperation<?> operation = this.cacheOperationSource.getCacheOperation(method, target.getClass());\n\t\tif (!(operation instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + operation);\n\t\t}\n\t\tCacheKeyInvocationContext<?> invocationContext = createCacheKeyInvocationContext(target, operation, params);\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(invocationContext);\n\t\t}\n\t\telse {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn doGenerate(this.keyGenerator, invocationContext);\n\t\t}\n\t}\n\n\tprivate static Object doGenerate(KeyGenerator keyGenerator, CacheKeyInvocationContext<?> context) {\n\t\tList<Object> parameters = new ArrayList<>();\n\t\tfor (CacheInvocationParameter param : context.getKeyParameters()) {\n\t\t\tObject value = param.getValue();\n\t\t\tif (param.getParameterPosition() == context.getAllParameters().length - 1 &&\n\t\t\t\t\tcontext.getMethod().isVarArgs()) {\n\t\t\t\tparameters.addAll(CollectionUtils.arrayToList(value));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparameters.add(value);\n\t\t\t}\n\t\t}\n\t\treturn keyGenerator.generate(context.getTarget(), context.getMethod(), parameters.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> createCacheKeyInvocationContext(\n\t\t\tObject target, JCacheOperation<?> operation, @Nullable Object[] params) {\n\n\t\tAbstractJCacheKeyOperation<Annotation> keyCacheOperation = (AbstractJCacheKeyOperation<Annotation>) operation;\n\t\treturn new DefaultCacheKeyInvocationContext<>(keyCacheOperation, target, params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5bfe851c81932b013069f41018c3cd41cdc1ecdda908d34851a6fac8118d8c90", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 109, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__KeyGeneratorAdapter__5bbec5aa.java", "order": 9, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 8}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-18ec5bbec5aa-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1158, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-54819c6877f5-I10", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList; import java.util.List; import javax.cache.annotation.CacheInvocationParameter; import javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext; import org.jspecify.annotations.Nullable; import org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert; import org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator { private final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, KeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\"); Assert.notNull(target, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.keyGenerator = target; } /**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, CacheKeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource; this.cacheKeyGenerator = target; } /**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object getTarget() {\n\t\tif (this.cacheKeyGenerator != null) { return this.cacheKeyGenerator;\n\t\t} Assert.state(this.keyGenerator != null, \"No key generator\"); return this.keyGenerator;\n\t} @Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) { JCacheOperation<?> operation = this.cacheOperationSource.getCacheOperation(method, target.getClass());\n\t\tif (!(operation instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + operation); }\n\t\tCacheKeyInvocationContext<?> invocationContext = createCacheKeyInvocationContext(target, operation, params);\n\n\t\tif (this.cacheKeyGenerator != null) { return this.cacheKeyGenerator.generateCacheKey(invocationContext);\n\t\t}\n\t\telse { Assert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn doGenerate(this.keyGenerator, invocationContext); }\n\t} private static Object doGenerate(KeyGenerator keyGenerator, CacheKeyInvocationContext<?> context) {\n\t\tList<Object> parameters = new ArrayList<>(); for (CacheInvocationParameter param : context.getKeyParameters()) {\n\t\t\tObject value = param.getValue(); if (param.getParameterPosition() == context.getAllParameters().length - 1 && context.getMethod().isVarArgs()) {\n\t\t\t\tparameters.addAll(CollectionUtils.arrayToList(value));\n\t\t\t}\n\t\t\telse { parameters.add(value);\n\t\t\t}\n\t\t}\n\t\treturn keyGenerator.generate(context.getTarget(), context.getMethod(), parameters.toArray()); }\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> createCacheKeyInvocationContext(\n\t\t\tObject target, JCacheOperation<?> operation, @Nullable Object[] params) {\n\n\t\tAbstractJCacheKeyOperation<Annotation> keyCacheOperation = (AbstractJCacheKeyOperation<Annotation>) operation;\n\t\treturn new DefaultCacheKeyInvocationContext<>(keyCacheOperation, target, params);\n\t} }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "b275d5b07c11fc3c59bd6e34e9693ba8e36110bc70a8ca2bfe34eb736b3475d1", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "partially-compact-layout", "level": 10, "line_count": 71, "local_path": "layout/partially-compact-layout/I10__spring-framework__KeyGeneratorAdapter__9c6877f5.java", "order": 10, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 74, "line_break_groups_removed": 29, "line_breaks_removed": 36, "whitespace_characters_removed": 52}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-54819c6877f5-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1159, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2fa7148a9ed1-I11", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, KeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.keyGenerator = target;\n\t}\n\n\t/**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, CacheKeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.cacheKeyGenerator = target;\n\t}\n\n\n\t/**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object getTarget() {\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\tJCacheOperation<?> operation = this.cacheOperationSource.getCacheOperation(method, target.getClass());\n\t\tif (!(operation instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + operation);\n\t\t}\n\t\tCacheKeyInvocationContext<?> invocationContext = createCacheKeyInvocationContext(target, operation, params);\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(invocationContext);\n\t\t}\n\t\telse {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn doGenerate(this.keyGenerator, invocationContext);\n\t\t}\n\t}\n\n\tprivate static Object doGenerate(KeyGenerator keyGenerator, CacheKeyInvocationContext<?> context) {\n\t\tList<Object> parameters = new ArrayList<>();\n\t\tfor (CacheInvocationParameter param : context.getKeyParameters()) {\n\t\t\tObject value = param.getValue();\n\t\t\tfinal int a = 2;\n\t\t\tfinal int b = -1;\n\t\t\tif (param.getParameterPosition() == context.getAllParameters().length - (a + b) &&\n\t\t\t\t\tcontext.getMethod().isVarArgs()) {\n\t\t\t\tparameters.addAll(CollectionUtils.arrayToList(value));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparameters.add(value);\n\t\t\t}\n\t\t}\n\t\treturn keyGenerator.generate(context.getTarget(), context.getMethod(), parameters.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> createCacheKeyInvocationContext(\n\t\t\tObject target, JCacheOperation<?> operation, @Nullable Object[] params) {\n\n\t\tAbstractJCacheKeyOperation<Annotation> keyCacheOperation = (AbstractJCacheKeyOperation<Annotation>) operation;\n\t\treturn new DefaultCacheKeyInvocationContext<>(keyCacheOperation, target, params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "aa8edb80b8b558b526cc87c55ffffd726fd9c41102e971005cad431fa4ef8415", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 109, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__KeyGeneratorAdapter__148a9ed1.java", "order": 11, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 1, "intermediate_variables_introduced": 2, "statements_augmented": 1}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-2fa7148a9ed1-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1160, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5ac824f11b22-I12", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, KeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.keyGenerator = target;\n\t}\n\n\t/**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, CacheKeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.cacheKeyGenerator = target;\n\t}\n\n\n\t/**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object getTarget() {\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\tJCacheOperation<?> operation = this.cacheOperationSource.getCacheOperation(method, target.getClass());\n\t\tif (!(operation instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + operation);\n\t\t}\n\t\tCacheKeyInvocationContext<?> invocationContext = createCacheKeyInvocationContext(target, operation, params);\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(invocationContext);\n\t\t}\n\t\telse {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn doGenerate(this.keyGenerator, invocationContext);\n\t\t}\n\t}\n\n\tprivate static Object doGenerate(KeyGenerator keyGenerator, CacheKeyInvocationContext<?> context) {\n\t\tList<Object> parameters = new ArrayList<>();\n\t\tfor (CacheInvocationParameter param : context.getKeyParameters()) {\n\t\t\tObject value = param.getValue();\n\t\t\tif (param.getParameterPosition() == context.getAllParameters().length - 1 &&\n\t\t\t\t\tcontext.getMethod().isVarArgs()) {\n\t\t\t\tparameters.addAll(CollectionUtils.arrayToList(value));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparameters.add(value);\n\t\t\t}\n\t\t}\n\t\treturn keyGenerator.generate(context.getTarget(), context.getMethod(), parameters.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> createCacheKeyInvocationContext(\n\t\t\tObject target, JCacheOperation<?> operation, @Nullable Object[] params) {\n\n\t\t\n\t\treturn new DefaultCacheKeyInvocationContext<>(((AbstractJCacheKeyOperation<Annotation>) operation), target, params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "2097ffd013726343b88f9bddd6ba13b10bb18f4ffe1f983d83d0a9b333f2c219", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 107, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__KeyGeneratorAdapter__24f11b22.java", "order": 12, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-5ac824f11b22-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1161, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b5d74d8f1670-I13", "source": "package org.springframework.cache.jcache.interceptor;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Method;\nimport java.util.ArrayList;\nimport java.util.List;\nimport javax.cache.annotation.CacheInvocationParameter;\nimport javax.cache.annotation.CacheKeyGenerator;\nimport javax.cache.annotation.CacheKeyInvocationContext;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.cache.interceptor.KeyGenerator;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Spring's {@link KeyGenerator} implementation that either delegates to a standard JSR-107\n * {@link javax.cache.annotation.CacheKeyGenerator}, or wrap a standard {@link KeyGenerator}\n * so that only relevant parameters are handled.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n */\nclass KeyGeneratorAdapter implements KeyGenerator {\n\n\tprivate final JCacheOperationSource cacheOperationSource;\n\n\tprivate @Nullable KeyGenerator keyGenerator;\n\n\tprivate @Nullable CacheKeyGenerator cacheKeyGenerator;\n\n\n\t/**\n\t * Create an instance with the given {@link KeyGenerator} so that {@link javax.cache.annotation.CacheKey}\n\t * and {@link javax.cache.annotation.CacheValue} are handled according to the spec.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, KeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"KeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.keyGenerator = target;\n\t}\n\n\t/**\n\t * Create an instance used to wrap the specified {@link javax.cache.annotation.CacheKeyGenerator}.\n\t */\n\tpublic KeyGeneratorAdapter(JCacheOperationSource cacheOperationSource, CacheKeyGenerator target) {\n\t\tAssert.notNull(cacheOperationSource, \"JCacheOperationSource must not be null\");\n\t\tAssert.notNull(target, \"CacheKeyGenerator must not be null\");\n\t\tthis.cacheOperationSource = cacheOperationSource;\n\t\tthis.cacheKeyGenerator = target;\n\t}\n\n\n\t/**\n\t * Return the target key generator to use in the form of either a {@link KeyGenerator}\n\t * or a {@link CacheKeyGenerator}.\n\t */\n\tpublic Object getTarget() {\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator;\n\t\t}\n\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\treturn this.keyGenerator;\n\t}\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\tJCacheOperation<?> operation = this.cacheOperationSource.getCacheOperation(method, target.getClass());\n\t\tif (!(operation instanceof AbstractJCacheKeyOperation)) {\n\t\t\tthrow new IllegalStateException(\"Invalid operation, should be a key-based operation \" + operation);\n\t\t}\n\t\tCacheKeyInvocationContext<?> invocationContext = createCacheKeyInvocationContext(target, operation, params);\n\n\t\tif (this.cacheKeyGenerator != null) {\n\t\t\treturn this.cacheKeyGenerator.generateCacheKey(invocationContext);\n\t\t}\n\t\telse {\n\t\t\tAssert.state(this.keyGenerator != null, \"No key generator\");\n\t\t\treturn doGenerate(this.keyGenerator, invocationContext);\n\t\t}\n\t}\n\n\tprivate static Object doGenerate(KeyGenerator keyGenerator, CacheKeyInvocationContext<?> context) {\n\t\tList<Object> parameters = new ArrayList<>();\n\t\t{\n\t\t  CacheInvocationParameter[] loopArray = context.getKeyParameters();\n\t\t  int loopIndex = 0;\n\t\t  while (loopIndex < loopArray.length) {\n\t\t    CacheInvocationParameter param = loopArray[loopIndex++];\n\t\t    Object value = param.getValue();\n\t\t    if (param.getParameterPosition() == context.getAllParameters().length - 1 &&\n\t\t    \t\tcontext.getMethod().isVarArgs()) {\n\t\t    \tparameters.addAll(CollectionUtils.arrayToList(value));\n\t\t    }\n\t\t    else {\n\t\t    \tparameters.add(value);\n\t\t    }\n\t\t  }\n\t\t}\n\t\treturn keyGenerator.generate(context.getTarget(), context.getMethod(), parameters.toArray());\n\t}\n\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate CacheKeyInvocationContext<?> createCacheKeyInvocationContext(\n\t\t\tObject target, JCacheOperation<?> operation, @Nullable Object[] params) {\n\n\t\tAbstractJCacheKeyOperation<Annotation> keyCacheOperation = (AbstractJCacheKeyOperation<Annotation>) operation;\n\t\treturn new DefaultCacheKeyInvocationContext<>(keyCacheOperation, target, params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__KeyGeneratorAdapter__9608cc02.java", "base_sample_id": "source-76696a9a95e5c5c6", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "07d8bfdb3adc1cbd481fc3d1fe4d24cedb51cfc0b4ecb8cb0d3bde86eb27b796", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java", "interference": "lower-for-to-while", "level": 13, "line_count": 112, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__KeyGeneratorAdapter__4d8f1670.java", "order": 13, "original_content_sha256": "e7cc5cb5df3cb928e2b0605ccad263aa3f0149c6aee7a257bdd826cb36ac3d91", "parent_variant_id": "int-aa949608cc02-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/KeyGeneratorAdapter.java#L34-L127", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 1, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "KeyGeneratorAdapter", "variant_id": "int-b5d74d8f1670-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1162, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-502a3a6cb3e8-SRC", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource {\n\n\t/**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean isCandidateClass(Class<?> targetClass) {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */\n\tdefault boolean hasCacheOperations(Method method, @Nullable Class<?> targetClass) {\n\t\treturn !CollectionUtils.isEmpty(getCacheOperations(method, targetClass));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> getCacheOperations(Method method, @Nullable Class<?> targetClass);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": null, "level": 0, "line_count": 59, "local_path": "source-original/SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "order": 0, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-502a3a6cb3e8-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1093, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-271a454ca621-I01", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n\n\n\n\n\n\n\n\n\npublic interface CacheOperationSource {\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\tdefault boolean isCandidateClass(Class<?> targetClass) {\n\t\treturn true;\n\t}\n\n\t\n\n\n\n\n\n\n\n\tdefault boolean hasCacheOperations(Method method, @Nullable Class<?> targetClass) {\n\t\treturn !CollectionUtils.isEmpty(getCacheOperations(method, targetClass));\n\t}\n\n\t\n\n\n\n\n\n\n\n\t@Nullable Collection<CacheOperation> getCacheOperations(Method method, @Nullable Class<?> targetClass);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "0d106367ad5aaf38e35c422e90d9ee1e24ff001d0f136757fe329049f4632fe0", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "remove-comments", "level": 1, "line_count": 59, "local_path": "comments/remove-comments/I01__spring-framework__CacheOperationSource__454ca621.java", "order": 1, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1761, "comments_removed": 4}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-271a454ca621-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1094, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ec4fc14423fb-I02", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource {\n\n\t/**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean is(Class<?> target) {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */\n\tdefault boolean has(Method met, @Nullable Class<?> target2) {\n\t\treturn !CollectionUtils.isEmpty(get(met, target2));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> get(Method met2, @Nullable Class<?> target3);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a5c8d7ab84f8b2fcd35dcee30e26883cf407e53217b154f2d97fd96558ff205b", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "shorten-identifiers", "level": 2, "line_count": 59, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__CacheOperationSource__c14423fb.java", "order": 2, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 2, "identifiers_declared": 5, "local_name_collisions_avoided": 3, "method_calls_renamed": 1, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-ec4fc14423fb-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1095, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9fbd8e3d05ed-I03", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource {\n\n\t/**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean validateBalance(Class<?> primaryUser) {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */\n\tdefault boolean validateSession(Method region, @Nullable Class<?> currentNode) {\n\t\treturn !CollectionUtils.isEmpty(validateMessage(region, currentNode));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> validateMessage(Method amount, @Nullable Class<?> cachedScore);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "f9a89064dae04b52117d6b13e21b3f9026d79fa54a84ac6ec586a09b81b2a2b9", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "mislead-identifiers", "level": 3, "line_count": 59, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__CacheOperationSource__8e3d05ed.java", "order": 3, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 2, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 5, "local_random_pool_selections": 5, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 1, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 0, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 7}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-9fbd8e3d05ed-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1096, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e2e168147619-I04", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource {\n\n\t/**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean a(Class<?> a) {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */\n\tdefault boolean b(Method b, @Nullable Class<?> c) {\n\t\treturn !CollectionUtils.isEmpty(c(b, c));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> c(Method d, @Nullable Class<?> e);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "0225625d7effb7c1678f8877c2d72fae416cf588cc4c030e3b076eb39a687795", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "garble-identifiers", "level": 4, "line_count": 59, "local_path": "identifiers/garble-identifiers/I04__spring-framework__CacheOperationSource__68147619.java", "order": 4, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 2, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 1, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-e2e168147619-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1097, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7a829821583b-I05", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource {\n\n\t/**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean isCandidateClass(Class<?> targetClass) {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */\n\tdefault boolean hasCacheOperations(Method method, @Nullable Class<?> targetClass) {\n\t\treturn !CollectionUtils.isEmpty(getCacheOperations(method, targetClass));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> getCacheOperations(Method method, @Nullable Class<?> targetClass);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "encode-integer-literals", "level": 5, "line_count": 59, "local_path": "expressions/encode-integer-literals/I05__spring-framework__CacheOperationSource__9821583b.java", "order": 5, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-7a829821583b-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1098, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f00f9673a8e7-I06", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource {\n\n\t/**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean isCandidateClass(Class<?> targetClass) {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */\n\tdefault boolean hasCacheOperations(Method method, @Nullable Class<?> targetClass) {\n\t\treturn !CollectionUtils.isEmpty(getCacheOperations(method, targetClass));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> getCacheOperations(Method method, @Nullable Class<?> targetClass);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "invert-conditions", "level": 6, "line_count": 59, "local_path": "expressions/invert-conditions/I06__spring-framework__CacheOperationSource__9673a8e7.java", "order": 6, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-f00f9673a8e7-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1099, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3d0ced00f716-I07", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource {\n\n\t/**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean isCandidateClass(Class<?> targetClass) {\nif (((0xC644 ^ 0xC644) != 0)) { throw new AssertionError(); }\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */\n\tdefault boolean hasCacheOperations(Method method, @Nullable Class<?> targetClass) {\nif (((0x3483 ^ 0x3483) != 0)) { throw new AssertionError(); }\n\n\t\treturn !CollectionUtils.isEmpty(getCacheOperations(method, targetClass));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> getCacheOperations(Method method, @Nullable Class<?> targetClass);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "6753df13ace0f1f2ebf3563b4163b6ea4bc3e1e5985dda55c2daa7b4f499a2c6", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "insert-dead-branches", "level": 7, "line_count": 63, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__CacheOperationSource__ed00f716.java", "order": 7, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 2}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-3d0ced00f716-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1100, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-93df826ac87d-I08", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource {\n\n\t/**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean isCandidateClass(Class<?> targetClass) {\n{\n  int firstScore = 72;\n  int secondScore = 85;\n  int higherScore;\n  if (firstScore > secondScore) {\n    higherScore = firstScore;\n  } else {\n    higherScore = secondScore;\n  }\n}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */\n\tdefault boolean hasCacheOperations(Method method, @Nullable Class<?> targetClass) {\n\t\treturn !CollectionUtils.isEmpty(getCacheOperations(method, targetClass));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> getCacheOperations(Method method, @Nullable Class<?> targetClass);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "84fd24f750530480aac4c6e1190974c8c992eff43c9015444f9f6afa89d2e263", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 70, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__CacheOperationSource__826ac87d.java", "order": 8, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 10, "readable_template_index": 3}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-93df826ac87d-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1101, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a21e3e79de7b-I09", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource {\n\n\t/**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean isCandidateClass(Class<?> targetClass) {\n{int lI0O_21d76cfd=0x7321;lI0O_21d76cfd=((lI0O_21d76cfd^0x7321)|0)&-1;if(((lI0O_21d76cfd&1)==1)){lI0O_21d76cfd^=lI0O_21d76cfd;}}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */\n\tdefault boolean hasCacheOperations(Method method, @Nullable Class<?> targetClass) {\n\t\treturn !CollectionUtils.isEmpty(getCacheOperations(method, targetClass));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> getCacheOperations(Method method, @Nullable Class<?> targetClass);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b6e9031ebeeff7f720ccb84809960541b5b0e6087330d4b3a26b93b5014e03bb", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 61, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__CacheOperationSource__3e79de7b.java", "order": 9, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-a21e3e79de7b-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1102, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4381c5275ebe-I10", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method; import java.util.Collection;\nimport org.jspecify.annotations.Nullable; import org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource { /**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean isCandidateClass(Class<?> targetClass) {\n\t\treturn true; }\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */ default boolean hasCacheOperations(Method method, @Nullable Class<?> targetClass) { return !CollectionUtils.isEmpty(getCacheOperations(method, targetClass));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> getCacheOperations(Method method, @Nullable Class<?> targetClass);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "f1776d40a8d64807dd25360df53a84ae247f0aa91fdbb8774ffdd474df94744b", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "partially-compact-layout", "level": 10, "line_count": 52, "local_path": "layout/partially-compact-layout/I10__spring-framework__CacheOperationSource__c5275ebe.java", "order": 10, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 17, "line_break_groups_removed": 6, "line_breaks_removed": 7, "whitespace_characters_removed": 6}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-4381c5275ebe-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1103, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e4b382664ec3-I11", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource {\n\n\t/**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean isCandidateClass(Class<?> targetClass) {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */\n\tdefault boolean hasCacheOperations(Method method, @Nullable Class<?> targetClass) {\n\t\treturn !CollectionUtils.isEmpty(getCacheOperations(method, targetClass));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> getCacheOperations(Method method, @Nullable Class<?> targetClass);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 59, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__CacheOperationSource__82664ec3.java", "order": 11, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-e4b382664ec3-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1104, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e77a47425cf0-I12", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource {\n\n\t/**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean isCandidateClass(Class<?> targetClass) {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */\n\tdefault boolean hasCacheOperations(Method method, @Nullable Class<?> targetClass) {\n\t\treturn !CollectionUtils.isEmpty(getCacheOperations(method, targetClass));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> getCacheOperations(Method method, @Nullable Class<?> targetClass);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 59, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__CacheOperationSource__47425cf0.java", "order": 12, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-e77a47425cf0-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1105, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2ea8995eac5e-I13", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Collection;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\n\n/**\n * Interface used by {@link CacheInterceptor}. Implementations know how to source\n * cache operation attributes, whether from configuration, metadata attributes at\n * source level, or elsewhere.\n *\n * @author Costin Leau\n * @author Juergen Hoeller\n * @since 3.1\n */\npublic interface CacheOperationSource {\n\n\t/**\n\t * Determine whether the given class is a candidate for cache operations\n\t * in the metadata format of this {@code CacheOperationSource}.\n\t * <p>If this method returns {@code false}, the methods on the given class\n\t * will not get traversed for {@link #getCacheOperations} introspection.\n\t * Returning {@code false} is therefore an optimization for non-affected\n\t * classes, whereas {@code true} simply means that the class needs to get\n\t * fully introspected for each method on the given class individually.\n\t * @param targetClass the class to introspect\n\t * @return {@code false} if the class is known to have no cache operation\n\t * metadata at class or method level; {@code true} otherwise. The default\n\t * implementation returns {@code true}, leading to regular introspection.\n\t * @since 5.2\n\t * @see #hasCacheOperations\n\t */\n\tdefault boolean isCandidateClass(Class<?> targetClass) {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Determine whether there are cache operations for the given method.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null},\n\t * in which case the declaring class of the method must be used)\n\t * @since 6.2\n\t * @see #getCacheOperations\n\t */\n\tdefault boolean hasCacheOperations(Method method, @Nullable Class<?> targetClass) {\n\t\treturn !CollectionUtils.isEmpty(getCacheOperations(method, targetClass));\n\t}\n\n\t/**\n\t * Return the collection of cache operations for this method,\n\t * or {@code null} if the method contains no <em>cacheable</em> annotations.\n\t * @param method the method to introspect\n\t * @param targetClass the target class (can be {@code null}, in which case\n\t * the declaring class of the method must be used)\n\t * @return all cache operations for this method, or {@code null} if none found\n\t */\n\t@Nullable Collection<CacheOperation> getCacheOperations(Method method, @Nullable Class<?> targetClass);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__CacheOperationSource__3a6cb3e8.java", "base_sample_id": "source-84f7caf1fa173152", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java", "interference": "lower-for-to-while", "level": 13, "line_count": 59, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__CacheOperationSource__995eac5e.java", "order": 13, "original_content_sha256": "3da7c14e8f4a998ff5f9edf069937fa1919c654fe01b9df105b2f8c58cc91c4f", "parent_variant_id": "int-502a3a6cb3e8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperationSource.java#L26-L78", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "CacheOperationSource", "variant_id": "int-2ea8995eac5e-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1106, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-67b34b8847c3-SRC", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\treturn generateKey((KotlinDetector.isSuspendingFunction(method) ?\n\t\t\t\tArrays.copyOf(params, params.length - 1) : params));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object generateKey(@Nullable Object... params) {\n\t\tif (params.length == 0) {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tif (params.length == 1) {\n\t\t\tObject param = params[0];\n\t\t\tif (param != null && !param.getClass().isArray()) {\n\t\t\t\treturn param;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": null, "level": 0, "line_count": 48, "local_path": "source-original/SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "order": 0, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-67b34b8847c3-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1303, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d659155b5c9e-I01", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\treturn generateKey((KotlinDetector.isSuspendingFunction(method) ?\n\t\t\t\tArrays.copyOf(params, params.length - 1) : params));\n\t}\n\n\t\n\n\n\tpublic static Object generateKey(@Nullable Object... params) {\n\t\tif (params.length == 0) {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tif (params.length == 1) {\n\t\t\tObject param = params[0];\n\t\t\tif (param != null && !param.getClass().isArray()) {\n\t\t\t\treturn param;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "74c8e54b164cdab35a5ef73aaad8f9a3606acf64402a5e6650f4c831d4684b70", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "remove-comments", "level": 1, "line_count": 48, "local_path": "comments/remove-comments/I01__spring-framework__SimpleKeyGenerator__155b5c9e.java", "order": 1, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 690, "comments_removed": 2}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-d659155b5c9e-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1304, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c5a58538d3be-I02", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object gen(Object tar, Method met, @Nullable Object... par) {\n\t\treturn generate((KotlinDetector.isSuspendingFunction(met) ?\n\t\t\t\tArrays.copyOf(par, par.length - 1) : par));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object generate(@Nullable Object... par2) {\n\t\tif (par2.length == 0) {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tif (par2.length == 1) {\n\t\t\tObject par3 = par2[0];\n\t\t\tif (par3 != null && !par3.getClass().isArray()) {\n\t\t\t\treturn par3;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(par2);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7d0aaba052d1e32efd8a4944d867d5cceb683e17a135dab8642109737a8ca0c8", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "shorten-identifiers", "level": 2, "line_count": 48, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__SimpleKeyGenerator__8538d3be.java", "order": 2, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 11, "identifiers_declared": 5, "local_name_collisions_avoided": 2, "method_calls_renamed": 1, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-c5a58538d3be-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1305, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6a37e12595b9-I03", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object sendUser(Object buffer, Method amount, @Nullable Object... source) {\n\t\treturn parseRecord((KotlinDetector.isSuspendingFunction(amount) ?\n\t\t\t\tArrays.copyOf(source, source.length - 1) : source));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object parseRecord(@Nullable Object... window) {\n\t\tif (window.length == 0) {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tif (window.length == 1) {\n\t\t\tObject total = window[0];\n\t\t\tif (total != null && !total.getClass().isArray()) {\n\t\t\t\treturn total;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(window);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "0592412dec0c94337f7873ccb7d17d5126dc17852e817316251e6a133610d9ed", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "mislead-identifiers", "level": 3, "line_count": 48, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__SimpleKeyGenerator__e12595b9.java", "order": 3, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 11, "identifiers_declared": 5, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 5, "local_random_pool_selections": 5, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 1, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 2, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-6a37e12595b9-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1306, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a2d1d50111c9-I04", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object a(Object a, Method b, @Nullable Object... c) {\n\t\treturn b((KotlinDetector.isSuspendingFunction(b) ?\n\t\t\t\tArrays.copyOf(c, c.length - 1) : c));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object b(@Nullable Object... d) {\n\t\tif (d.length == 0) {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tif (d.length == 1) {\n\t\t\tObject e = d[0];\n\t\t\tif (e != null && !e.getClass().isArray()) {\n\t\t\t\treturn e;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(d);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a7731ea051d2ad4b37b46e1971150cc01ae521a598fceedfb46f58e26e9f29e8", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "garble-identifiers", "level": 4, "line_count": 48, "local_path": "identifiers/garble-identifiers/I04__spring-framework__SimpleKeyGenerator__d50111c9.java", "order": 4, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 11, "identifiers_declared": 5, "local_name_collisions_avoided": 0, "method_calls_renamed": 1, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-a2d1d50111c9-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1307, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bccf97d3e6a2-I05", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\treturn generateKey((KotlinDetector.isSuspendingFunction(method) ?\n\t\t\t\tArrays.copyOf(params, params.length - 0x1) : params));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object generateKey(@Nullable Object... params) {\n\t\tif (params.length == 0x0) {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tif (params.length == 0x1) {\n\t\t\tObject param = params[0x0];\n\t\t\tif (param != null && !param.getClass().isArray()) {\n\t\t\t\treturn param;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "35868a06b36c5275431b4f21b1d82a409431aec4f207e6a4f65846d4f7c2cfd1", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "encode-integer-literals", "level": 5, "line_count": 48, "local_path": "expressions/encode-integer-literals/I05__spring-framework__SimpleKeyGenerator__97d3e6a2.java", "order": 5, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 4}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-bccf97d3e6a2-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1308, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b5a50d433750-I06", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\treturn generateKey((KotlinDetector.isSuspendingFunction(method) ?\n\t\t\t\tArrays.copyOf(params, params.length - 1) : params));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object generateKey(@Nullable Object... params) {\n\t\tif (!((params.length == 0))) {} else {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tif (!((params.length == 1))) {} else {\n\t\t\tObject param = params[0];\n\t\t\tif (param != null && !param.getClass().isArray()) {\n\t\t\t\treturn param;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "1d9a9a7eba5658a562acd26effa843861f65a89f111665be29d7103d0602499e", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "invert-conditions", "level": 6, "line_count": 48, "local_path": "expressions/invert-conditions/I06__spring-framework__SimpleKeyGenerator__0d433750.java", "order": 6, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-b5a50d433750-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1309, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a5d16a085cb1-I07", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\nif (((0x35DC ^ 0x35DC) != 0)) { throw new AssertionError(); }\n\n\t\treturn generateKey((KotlinDetector.isSuspendingFunction(method) ?\n\t\t\t\tArrays.copyOf(params, params.length - 1) : params));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object generateKey(@Nullable Object... params) {\nif (((0xDD35 ^ 0xDD35) != 0)) { throw new AssertionError(); }\n\n\t\tif (params.length == 0) {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tif (params.length == 1) {\n\t\t\tObject param = params[0];\n\t\t\tif (param != null && !param.getClass().isArray()) {\n\t\t\t\treturn param;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "7d5406fa29f3af57837e9e3f1008a4dc4cd2976f65e9ec9d7beb1aabd0a3ac33", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "insert-dead-branches", "level": 7, "line_count": 52, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__SimpleKeyGenerator__6a085cb1.java", "order": 7, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 2}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-a5d16a085cb1-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1310, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d4d008edca2e-I08", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\treturn generateKey((KotlinDetector.isSuspendingFunction(method) ?\n\t\t\t\tArrays.copyOf(params, params.length - 1) : params));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object generateKey(@Nullable Object... params) {\n{\n  int remainingSteps = 3;\n  while (remainingSteps > 0) {\n    remainingSteps--;\n  }\n}\n\n\t\tif (params.length == 0) {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tif (params.length == 1) {\n\t\t\tObject param = params[0];\n\t\t\tif (param != null && !param.getClass().isArray()) {\n\t\t\t\treturn param;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "9f47515c253115651b871ef9107439cac60fc4df1b4e309dfda3044deb38867c", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 55, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__SimpleKeyGenerator__08edca2e.java", "order": 8, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 1}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-d4d008edca2e-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1311, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-587abfcac0ef-I09", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\treturn generateKey((KotlinDetector.isSuspendingFunction(method) ?\n\t\t\t\tArrays.copyOf(params, params.length - 1) : params));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object generateKey(@Nullable Object... params) {\n{int lI0O_e209bccf=(0xD232^0xD232);switch(lI0O_e209bccf){case 0:lI0O_e209bccf|=0;break;default:lI0O_e209bccf&=0;}}\n\n\t\tif (params.length == 0) {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tif (params.length == 1) {\n\t\t\tObject param = params[0];\n\t\t\tif (param != null && !param.getClass().isArray()) {\n\t\t\t\treturn param;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b27bc2e9cdc1bac3be94b6117048ebf1ecd1c919706f68de93ee4e5dbc52367c", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 50, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__SimpleKeyGenerator__bfcac0ef.java", "order": 9, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 6}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-587abfcac0ef-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1312, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eb65ef40ce4d-I10", "source": "package org.springframework.cache.interceptor; import java.lang.reflect.Method; import java.util.Arrays; import org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator { @Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\treturn generateKey((KotlinDetector.isSuspendingFunction(method) ?\n\t\t\t\tArrays.copyOf(params, params.length - 1) : params));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object generateKey(@Nullable Object... params) {\n\t\tif (params.length == 0) { return SimpleKey.EMPTY;\n\t\t} if (params.length == 1) {\n\t\t\tObject param = params[0];\n\t\t\tif (param != null && !param.getClass().isArray()) {\n\t\t\t\treturn param; } } return new SimpleKey(params); }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "26980007cd701efec7444059192ddff9543765ca57a61d9d2497cd5c9238c0f0", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "partially-compact-layout", "level": 10, "line_count": 37, "local_path": "layout/partially-compact-layout/I10__spring-framework__SimpleKeyGenerator__ef40ce4d.java", "order": 10, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 25, "line_break_groups_removed": 10, "line_breaks_removed": 11, "whitespace_characters_removed": 15}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-eb65ef40ce4d-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1313, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6d3a0cd47817-I11", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\tfinal int a = 2;\n\t\tfinal int b = -1;\n\t\treturn generateKey((KotlinDetector.isSuspendingFunction(method) ?\n\t\t\t\tArrays.copyOf(params, params.length - (a + b)) : params));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object generateKey(@Nullable Object... params) {\n\t\tfinal int c = 1;\n\t\tfinal int d = -1;\n\t\tif (params.length == (c + d)) {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tfinal int e = 2;\n\t\tfinal int f = -1;\n\t\tif (params.length == (e + f)) {\n\t\t\tfinal int g = 1;\n\t\t\tfinal int h = -1;\n\t\t\tObject param = params[(g + h)];\n\t\t\tif (param != null && !param.getClass().isArray()) {\n\t\t\t\treturn param;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "ac8f7e10b5c2861d5100571bfba93a5a8baad1f63ed8ea49c9eada2ad66e4170", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 56, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__SimpleKeyGenerator__0cd47817.java", "order": 11, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 4, "intermediate_variables_introduced": 8, "statements_augmented": 4}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-6d3a0cd47817-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1314, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-da794b21ceac-I12", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\treturn generateKey((KotlinDetector.isSuspendingFunction(method) ?\n\t\t\t\tArrays.copyOf(params, params.length - 1) : params));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object generateKey(@Nullable Object... params) {\n\t\tif (params.length == 0) {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tif (params.length == 1) {\n\t\t\tObject param = params[0];\n\t\t\tif (param != null && !param.getClass().isArray()) {\n\t\t\t\treturn param;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 48, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__SimpleKeyGenerator__4b21ceac.java", "order": 12, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-da794b21ceac-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1315, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-35a63616b9ae-I13", "source": "package org.springframework.cache.interceptor;\nimport java.lang.reflect.Method;\nimport java.util.Arrays;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.KotlinDetector;\n\n/**\n * Simple key generator. Returns the parameter itself if a single non-null\n * value is given, otherwise returns a {@link SimpleKey} of the parameters.\n *\n * <p>No collisions will occur with the keys generated by this class.\n * The returned {@link SimpleKey} object can be safely used with a\n * {@link org.springframework.cache.concurrent.ConcurrentMapCache}, however,\n * might not be suitable for all {@link org.springframework.cache.Cache}\n * implementations.\n *\n * @author Phillip Webb\n * @author Juergen Hoeller\n * @author Sebastien Deleuze\n * @since 4.0\n * @see SimpleKey\n * @see org.springframework.cache.annotation.CachingConfigurer\n */\npublic class SimpleKeyGenerator implements KeyGenerator {\n\n\t@Override\n\tpublic Object generate(Object target, Method method, @Nullable Object... params) {\n\t\treturn generateKey((KotlinDetector.isSuspendingFunction(method) ?\n\t\t\t\tArrays.copyOf(params, params.length - 1) : params));\n\t}\n\n\t/**\n\t * Generate a key based on the specified parameters.\n\t */\n\tpublic static Object generateKey(@Nullable Object... params) {\n\t\tif (params.length == 0) {\n\t\t\treturn SimpleKey.EMPTY;\n\t\t}\n\t\tif (params.length == 1) {\n\t\t\tObject param = params[0];\n\t\t\tif (param != null && !param.getClass().isArray()) {\n\t\t\t\treturn param;\n\t\t\t}\n\t\t}\n\t\treturn new SimpleKey(params);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__SimpleKeyGenerator__4b8847c3.java", "base_sample_id": "source-6088818b3c430b4f", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java", "interference": "lower-for-to-while", "level": 13, "line_count": 48, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__SimpleKeyGenerator__3616b9ae.java", "order": 13, "original_content_sha256": "1f50fe2321f698c39b6b32112274d2d47da82c2c74a4801f189ab7f158f8ba7d", "parent_variant_id": "int-67b34b8847c3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/cache/interceptor/SimpleKeyGenerator.java#L26-L67", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "SimpleKeyGenerator", "variant_id": "int-35a63616b9ae-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1316, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-579ad1da43e1-SRC", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t/**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */\n\tdefault void onRefresh() {\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */\n\tdefault void onRestart() {\n\t\tstop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void onPause() {\n\t\tstop();\n\t}\n\n\t/**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */\n\tdefault void onClose() {\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": null, "level": 0, "line_count": 49, "local_path": "source-original/SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "order": 0, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-579ad1da43e1-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1163, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-03a3738641ec-I01", "source": "package org.springframework.context;\n\n\n\n\n\n\n\n\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t\n\n\n\n\tdefault void onRefresh() {\n\t\tstart();\n\t}\n\n\t\n\n\n\n\n\n\tdefault void onRestart() {\n\t\tstop();\n\t\tstart();\n\t}\n\n\t\n\n\n\n\n\tdefault void onPause() {\n\t\tstop();\n\t}\n\n\t\n\n\n\n\n\tdefault void onClose() {\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "e7feb6ee1b93eabac346c86bd7f605e7ca7abe29f5bac25754ac651eadec8733", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "remove-comments", "level": 1, "line_count": 49, "local_path": "comments/remove-comments/I01__spring-framework__LifecycleProcessor__738641ec.java", "order": 1, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 718, "comments_removed": 5}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-03a3738641ec-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1164, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a14e3929a5d4-I02", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t/**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */\n\tdefault void on() {\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */\n\tdefault void on2() {\n\t\tstop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void on3() {\n\t\tstop();\n\t}\n\n\t/**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */\n\tdefault void on4() {\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "633421fc28162f033507b2e0269d0d4fbde0c96d5ec68de3231d0f68d58e1dbe", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "shorten-identifiers", "level": 2, "line_count": 49, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__LifecycleProcessor__3929a5d4.java", "order": 2, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 4, "method_name_collisions_avoided": 3, "method_name_groups": 4}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-a14e3929a5d4-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1165, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-159506e2112d-I03", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t/**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */\n\tdefault void saveState() {\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */\n\tdefault void saveEvent() {\n\t\tstop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void readKey() {\n\t\tstop();\n\t}\n\n\t/**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */\n\tdefault void refresh() {\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "8b45751640a509e293dbf634dd74f837fe319ccdeae237cf9733b55b95d4e7b4", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "mislead-identifiers", "level": 3, "line_count": 49, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__LifecycleProcessor__06e2112d.java", "order": 3, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 0, "local_random_pool_selections": 0, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 4, "method_name_groups": 4, "method_random_pool_selections": 4, "method_total_length_difference": 0}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-159506e2112d-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1166, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9f0f35f4dda4-I04", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t/**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */\n\tdefault void a() {\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */\n\tdefault void b() {\n\t\tstop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void c() {\n\t\tstop();\n\t}\n\n\t/**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */\n\tdefault void d() {\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "79e470a4c1899dd58dd17df83ac13faec0e4466b5c8307849ab897e4b15646dd", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "garble-identifiers", "level": 4, "line_count": 49, "local_path": "identifiers/garble-identifiers/I04__spring-framework__LifecycleProcessor__35f4dda4.java", "order": 4, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 4}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-9f0f35f4dda4-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1167, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a6d6f5702cb3-I05", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t/**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */\n\tdefault void onRefresh() {\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */\n\tdefault void onRestart() {\n\t\tstop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void onPause() {\n\t\tstop();\n\t}\n\n\t/**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */\n\tdefault void onClose() {\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "encode-integer-literals", "level": 5, "line_count": 49, "local_path": "expressions/encode-integer-literals/I05__spring-framework__LifecycleProcessor__f5702cb3.java", "order": 5, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-a6d6f5702cb3-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1168, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0166ff1bd173-I06", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t/**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */\n\tdefault void onRefresh() {\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */\n\tdefault void onRestart() {\n\t\tstop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void onPause() {\n\t\tstop();\n\t}\n\n\t/**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */\n\tdefault void onClose() {\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "invert-conditions", "level": 6, "line_count": 49, "local_path": "expressions/invert-conditions/I06__spring-framework__LifecycleProcessor__ff1bd173.java", "order": 6, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-0166ff1bd173-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1169, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2c0edbc2fa77-I07", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t/**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */\n\tdefault void onRefresh() {\nif (((0x3E7C ^ 0x3E7C) != 0)) { throw new AssertionError(); }\n\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */\n\tdefault void onRestart() {\nif (((0xC9C1 ^ 0xC9C1) != 0)) { throw new AssertionError(); }\n\n\t\tstop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void onPause() {\nif (((0xF953 ^ 0xF953) != 0)) { throw new AssertionError(); }\n\n\t\tstop();\n\t}\n\n\t/**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */\n\tdefault void onClose() {\nif (((0xADD5 ^ 0xADD5) != 0)) { throw new AssertionError(); }\n\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "711986dc888a501d1533fb4e604d881eac09f1d55a0295f94117c5964f23a10b", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "insert-dead-branches", "level": 7, "line_count": 57, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__LifecycleProcessor__dbc2fa77.java", "order": 7, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-2c0edbc2fa77-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1170, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e6fc1021374e-I08", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t/**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */\n\tdefault void onRefresh() {\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */\n\tdefault void onRestart() {\n{\n  int totalScore = 240;\n  int numberOfScores = 3;\n  int averageScore = totalScore / numberOfScores;\n}\n\n\t\tstop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void onPause() {\n\t\tstop();\n\t}\n\n\t/**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */\n\tdefault void onClose() {\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "8572bb0ab2d7fa07bf79a7da7b972dfddfd1e412c408ce2c1cb51c5e75c32255", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 55, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__LifecycleProcessor__1021374e.java", "order": 8, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 5, "readable_template_index": 5}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-e6fc1021374e-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1171, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-45f977e96830-I09", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t/**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */\n\tdefault void onRefresh() {\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */\n\tdefault void onRestart() {\n{int lI0O_8d8f01dc=0x9449,lI0O_7bbd2238=~lI0O_8d8f01dc;lI0O_8d8f01dc=(lI0O_8d8f01dc&lI0O_7bbd2238)|(lI0O_8d8f01dc^lI0O_8d8f01dc);lI0O_7bbd2238^=lI0O_7bbd2238;}\n\n\t\tstop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void onPause() {\n\t\tstop();\n\t}\n\n\t/**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */\n\tdefault void onClose() {\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "c1145afc38571f72cf1775694ff84deff82792911383b091abeab8932d35eaee", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 51, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__LifecycleProcessor__77e96830.java", "order": 9, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 9}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-45f977e96830-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1172, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-973ee185cc2d-I10", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle { /**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */ default void onRefresh() {\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */ default void onRestart() { stop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void onPause() {\n\t\tstop(); } /**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */ default void onClose() {\n\t\tstop(); }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "4a417b67a22c96e59eb005bc58f1309b32a4f3b953d8874ea9db71b228d02ca6", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "partially-compact-layout", "level": 10, "line_count": 39, "local_path": "layout/partially-compact-layout/I10__spring-framework__LifecycleProcessor__e185cc2d.java", "order": 10, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 20, "line_break_groups_removed": 8, "line_breaks_removed": 10, "whitespace_characters_removed": 11}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-973ee185cc2d-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1173, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a3f59fe66ab8-I11", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t/**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */\n\tdefault void onRefresh() {\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */\n\tdefault void onRestart() {\n\t\tstop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void onPause() {\n\t\tstop();\n\t}\n\n\t/**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */\n\tdefault void onClose() {\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 49, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__LifecycleProcessor__9fe66ab8.java", "order": 11, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-a3f59fe66ab8-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1174, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-931782e43ccb-I12", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t/**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */\n\tdefault void onRefresh() {\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */\n\tdefault void onRestart() {\n\t\tstop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void onPause() {\n\t\tstop();\n\t}\n\n\t/**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */\n\tdefault void onClose() {\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 49, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__LifecycleProcessor__82e43ccb.java", "order": 12, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-931782e43ccb-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1175, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-41f4e49de0ce-I13", "source": "package org.springframework.context;\n\n/**\n * Strategy interface for processing Lifecycle beans within the ApplicationContext.\n *\n * @author Mark Fisher\n * @author Juergen Hoeller\n * @since 3.0\n */\npublic interface LifecycleProcessor extends Lifecycle {\n\n\t/**\n\t * Notification of context refresh for auto-starting components.\n\t * @see ConfigurableApplicationContext#refresh()\n\t */\n\tdefault void onRefresh() {\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context restart for auto-stopping and subsequently\n\t * auto-starting components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#restart()\n\t */\n\tdefault void onRestart() {\n\t\tstop();\n\t\tstart();\n\t}\n\n\t/**\n\t * Notification of context pause for auto-stopping components.\n\t * @since 7.0\n\t * @see ConfigurableApplicationContext#pause()\n\t */\n\tdefault void onPause() {\n\t\tstop();\n\t}\n\n\t/**\n\t * Notification of context close phase for auto-stopping components\n\t * before destruction.\n\t * @see ConfigurableApplicationContext#close()\n\t */\n\tdefault void onClose() {\n\t\tstop();\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__LifecycleProcessor__d1da43e1.java", "base_sample_id": "source-a6408e0c36eef0bb", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java", "interference": "lower-for-to-while", "level": 13, "line_count": 49, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__LifecycleProcessor__e49de0ce.java", "order": 13, "original_content_sha256": "78164127984b6c5dd67f323e4c68d8806dd15fc739b8ba50448df0d4c10150fd", "parent_variant_id": "int-579ad1da43e1-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-context/src/main/java/org/springframework/context/LifecycleProcessor.java#L19-L65", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "LifecycleProcessor", "variant_id": "int-41f4e49de0ce-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1176, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-04dab0fcef32-SRC", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] chain) {\n        this.chain = chain.clone();\n    }\n\n    @Override\n\tpublic void setTarget(ClassVisitor v) {\n        super.setTarget(chain[0]);\n        ClassVisitor next = v;\n        for (int i = chain.length - 1; i >= 0; i--) {\n            chain[i].setTarget(next);\n            next = chain[i];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor visitMethod(int access,\n                                     String name,\n                                     String desc,\n                                     String signature,\n                                     String[] exceptions) {\n        return cv.visitMethod(access, name, desc, signature, exceptions);\n    }\n\n    @Override\n\tpublic String toString() {\n\t\tStringBuilder sb = new StringBuilder();\n        sb.append(\"ClassTransformerChain{\");\n        for (int i = 0; i < chain.length; i++) {\n            if (i > 0) {\n                sb.append(\", \");\n            }\n            sb.append(chain[i].toString());\n        }\n        sb.append(\"}\");\n        return sb.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": null, "level": 0, "line_count": 45, "local_path": "source-original/SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "order": 0, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-04dab0fcef32-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1107, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-714f8bef2a85-I01", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] chain) {\n        this.chain = chain.clone();\n    }\n\n    @Override\n\tpublic void setTarget(ClassVisitor v) {\n        super.setTarget(chain[0]);\n        ClassVisitor next = v;\n        for (int i = chain.length - 1; i >= 0; i--) {\n            chain[i].setTarget(next);\n            next = chain[i];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor visitMethod(int access,\n                                     String name,\n                                     String desc,\n                                     String signature,\n                                     String[] exceptions) {\n        return cv.visitMethod(access, name, desc, signature, exceptions);\n    }\n\n    @Override\n\tpublic String toString() {\n\t\tStringBuilder sb = new StringBuilder();\n        sb.append(\"ClassTransformerChain{\");\n        for (int i = 0; i < chain.length; i++) {\n            if (i > 0) {\n                sb.append(\", \");\n            }\n            sb.append(chain[i].toString());\n        }\n        sb.append(\"}\");\n        return sb.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "remove-comments", "level": 1, "line_count": 45, "local_path": "comments/remove-comments/I01__spring-framework__ClassTransformerChain__8bef2a85.java", "order": 1, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 0, "comments_removed": 0}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-714f8bef2a85-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1108, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9ce974d808c2-I02", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] cha) {\n        this.chain = cha.clone();\n    }\n\n    @Override\n\tpublic void set(ClassVisitor v) {\n        super.setTarget(chain[0]);\n        ClassVisitor nex = v;\n        for (int i = chain.length - 1; i >= 0; i--) {\n            chain[i].setTarget(nex);\n            nex = chain[i];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor visit(int acc,\n                                     String nam,\n                                     String des,\n                                     String sig,\n                                     String[] exc) {\n        return cv.visitMethod(acc, nam, des, sig, exc);\n    }\n\n    @Override\n\tpublic String to() {\n\t\tStringBuilder sb = new StringBuilder();\n        sb.append(\"ClassTransformerChain{\");\n        for (int i = 0; i < chain.length; i++) {\n            if (i > 0) {\n                sb.append(\", \");\n            }\n            sb.append(chain[i].toString());\n        }\n        sb.append(\"}\");\n        return sb.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e23346f576635b87aac1a136490c8aad5c05ae6cf043fcfb87de6a65ac43b0bb", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "shorten-identifiers", "level": 2, "line_count": 45, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__ClassTransformerChain__74d808c2.java", "order": 2, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 22, "identifiers_declared": 11, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-9ce974d808c2-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1109, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cc2f2f30c62f-I03", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] index) {\n        this.chain = index.clone();\n    }\n\n    @Override\n\tpublic void findCache(ClassVisitor key) {\n        super.setTarget(chain[0]);\n        ClassVisitor path = key;\n        for (int age = chain.length - 1; age >= 0; age--) {\n            chain[age].setTarget(path);\n            path = chain[age];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor updateIndex(int option,\n                                     String item,\n                                     String flag,\n                                     String localPath,\n                                     String[] backupNode) {\n        return cv.visitMethod(option, item, flag, localPath, backupNode);\n    }\n\n    @Override\n\tpublic String organize() {\n\t\tStringBuilder map = new StringBuilder();\n        map.append(\"ClassTransformerChain{\");\n        for (int node = 0; node < chain.length; node++) {\n            if (node > 0) {\n                map.append(\", \");\n            }\n            map.append(chain[node].toString());\n        }\n        map.append(\"}\");\n        return map.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "c19ddd0d5d24204f3d434b29ce5ceac34c78c06d4255e9075df350bb8f50907d", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "mislead-identifiers", "level": 3, "line_count": 45, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__ClassTransformerChain__2f30c62f.java", "order": 3, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 22, "identifiers_declared": 11, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 5, "local_exact_length_matches": 7, "local_random_pool_selections": 11, "local_total_length_difference": 8, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 3, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-cc2f2f30c62f-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1110, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5222562258e8-I04", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] a) {\n        this.chain = a.clone();\n    }\n\n    @Override\n\tpublic void a(ClassVisitor b) {\n        super.setTarget(chain[0]);\n        ClassVisitor c = b;\n        for (int d = chain.length - 1; d >= 0; d--) {\n            chain[d].setTarget(c);\n            c = chain[d];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor b(int e,\n                                     String f,\n                                     String g,\n                                     String h,\n                                     String[] i) {\n        return cv.visitMethod(e, f, g, h, i);\n    }\n\n    @Override\n\tpublic String c() {\n\t\tStringBuilder j = new StringBuilder();\n        j.append(\"ClassTransformerChain{\");\n        for (int i = 0; i < chain.length; i++) {\n            if (i > 0) {\n                j.append(\", \");\n            }\n            j.append(chain[i].toString());\n        }\n        j.append(\"}\");\n        return j.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b975a6900870c9ba9349856fb343f50b721637e257afb9f7b87cf9859a8c8ef5", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "garble-identifiers", "level": 4, "line_count": 45, "local_path": "identifiers/garble-identifiers/I04__spring-framework__ClassTransformerChain__562258e8.java", "order": 4, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 22, "identifiers_declared": 11, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-5222562258e8-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1111, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7d4d612cfbbe-I05", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] chain) {\n        this.chain = chain.clone();\n    }\n\n    @Override\n\tpublic void setTarget(ClassVisitor v) {\n        super.setTarget(chain[0x0]);\n        ClassVisitor next = v;\n        for (int i = chain.length - 0x1; i >= 0x0; i--) {\n            chain[i].setTarget(next);\n            next = chain[i];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor visitMethod(int access,\n                                     String name,\n                                     String desc,\n                                     String signature,\n                                     String[] exceptions) {\n        return cv.visitMethod(access, name, desc, signature, exceptions);\n    }\n\n    @Override\n\tpublic String toString() {\n\t\tStringBuilder sb = new StringBuilder();\n        sb.append(\"ClassTransformerChain{\");\n        for (int i = 0x0; i < chain.length; i++) {\n            if (i > 0x0) {\n                sb.append(\", \");\n            }\n            sb.append(chain[i].toString());\n        }\n        sb.append(\"}\");\n        return sb.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "89cc48e76f88f4660fa264752073534159582e0f1bb77890d2f1613dd4916f72", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "encode-integer-literals", "level": 5, "line_count": 45, "local_path": "expressions/encode-integer-literals/I05__spring-framework__ClassTransformerChain__612cfbbe.java", "order": 5, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 5}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-7d4d612cfbbe-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1112, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-29c662ce6c48-I06", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] chain) {\n        this.chain = chain.clone();\n    }\n\n    @Override\n\tpublic void setTarget(ClassVisitor v) {\n        super.setTarget(chain[0]);\n        ClassVisitor next = v;\n        for (int i = chain.length - 1; i >= 0; i--) {\n            chain[i].setTarget(next);\n            next = chain[i];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor visitMethod(int access,\n                                     String name,\n                                     String desc,\n                                     String signature,\n                                     String[] exceptions) {\n        return cv.visitMethod(access, name, desc, signature, exceptions);\n    }\n\n    @Override\n\tpublic String toString() {\n\t\tStringBuilder sb = new StringBuilder();\n        sb.append(\"ClassTransformerChain{\");\n        for (int i = 0; i < chain.length; i++) {\n            if (!((i > 0))) {} else {\n                sb.append(\", \");\n            }\n            sb.append(chain[i].toString());\n        }\n        sb.append(\"}\");\n        return sb.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "2e731a851a02bdceadd2b5f431abb659e297acbe1cb571d9af8c62ed65f3a074", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "invert-conditions", "level": 6, "line_count": 45, "local_path": "expressions/invert-conditions/I06__spring-framework__ClassTransformerChain__62ce6c48.java", "order": 6, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-29c662ce6c48-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1113, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-558ebf687f55-I07", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] chain) {\nif (((0x978 ^ 0x978) != 0)) { throw new AssertionError(); }\n\n        this.chain = chain.clone();\n    }\n\n    @Override\n\tpublic void setTarget(ClassVisitor v) {\nif (((0xF0A ^ 0xF0A) != 0)) { throw new AssertionError(); }\n\n        super.setTarget(chain[0]);\n        ClassVisitor next = v;\n        for (int i = chain.length - 1; i >= 0; i--) {\n            chain[i].setTarget(next);\n            next = chain[i];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor visitMethod(int access,\n                                     String name,\n                                     String desc,\n                                     String signature,\n                                     String[] exceptions) {\nif (((0xC170 ^ 0xC170) != 0)) { throw new AssertionError(); }\n\n        return cv.visitMethod(access, name, desc, signature, exceptions);\n    }\n\n    @Override\n\tpublic String toString() {\nif (((0x169C ^ 0x169C) != 0)) { throw new AssertionError(); }\n\n\t\tStringBuilder sb = new StringBuilder();\n        sb.append(\"ClassTransformerChain{\");\n        for (int i = 0; i < chain.length; i++) {\n            if (i > 0) {\n                sb.append(\", \");\n            }\n            sb.append(chain[i].toString());\n        }\n        sb.append(\"}\");\n        return sb.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "7ff757766d8c0239a6ffd0338a21281e8eca7a46676176ee11a31f21fef81606", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "insert-dead-branches", "level": 7, "line_count": 53, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__ClassTransformerChain__bf687f55.java", "order": 7, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-558ebf687f55-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1114, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-13a1e9fad37e-I08", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] chain) {\n        this.chain = chain.clone();\n    }\n\n    @Override\n\tpublic void setTarget(ClassVisitor v) {\n        super.setTarget(chain[0]);\n        ClassVisitor next = v;\n        for (int i = chain.length - 1; i >= 0; i--) {\n            chain[i].setTarget(next);\n            next = chain[i];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor visitMethod(int access,\n                                     String name,\n                                     String desc,\n                                     String signature,\n                                     String[] exceptions) {\n        return cv.visitMethod(access, name, desc, signature, exceptions);\n    }\n\n    @Override\n\tpublic String toString() {\n{\n  int firstScore = 72;\n  int secondScore = 85;\n  int higherScore;\n  if (firstScore > secondScore) {\n    higherScore = firstScore;\n  } else {\n    higherScore = secondScore;\n  }\n}\n\n\t\tStringBuilder sb = new StringBuilder();\n        sb.append(\"ClassTransformerChain{\");\n        for (int i = 0; i < chain.length; i++) {\n            if (i > 0) {\n                sb.append(\", \");\n            }\n            sb.append(chain[i].toString());\n        }\n        sb.append(\"}\");\n        return sb.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "efaed41de5eb9e703a9e5b2d227e59e3ac0fed000cfb11a89820caeb07c0ec16", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 56, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__ClassTransformerChain__e9fad37e.java", "order": 8, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 10, "readable_template_index": 3}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-13a1e9fad37e-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1115, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3a1b30e7dc30-I09", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] chain) {\n        this.chain = chain.clone();\n    }\n\n    @Override\n\tpublic void setTarget(ClassVisitor v) {\n        super.setTarget(chain[0]);\n        ClassVisitor next = v;\n        for (int i = chain.length - 1; i >= 0; i--) {\n            chain[i].setTarget(next);\n            next = chain[i];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor visitMethod(int access,\n                                     String name,\n                                     String desc,\n                                     String signature,\n                                     String[] exceptions) {\n        return cv.visitMethod(access, name, desc, signature, exceptions);\n    }\n\n    @Override\n\tpublic String toString() {\n{int lI0O_faf11616=0,lI0O_eea40421=0;while(lI0O_eea40421<2){lI0O_faf11616^=(lI0O_eea40421<<1)^0x0;lI0O_eea40421++;}lI0O_faf11616^=lI0O_faf11616;}\n\n\t\tStringBuilder sb = new StringBuilder();\n        sb.append(\"ClassTransformerChain{\");\n        for (int i = 0; i < chain.length; i++) {\n            if (i > 0) {\n                sb.append(\", \");\n            }\n            sb.append(chain[i].toString());\n        }\n        sb.append(\"}\");\n        return sb.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "1f86d9fe226b7277c895d5702a1e291236aa7ea7d788bec49b8cb52440762b11", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 47, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__ClassTransformerChain__30e7dc30.java", "order": 9, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 2}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-3a1b30e7dc30-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1116, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-219cd4244fbd-I10", "source": "package org.springframework.cglib.transform; import org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] chain) { this.chain = chain.clone(); } @Override\n\tpublic void setTarget(ClassVisitor v) { super.setTarget(chain[0]); ClassVisitor next = v; for (int i = chain.length - 1; i >= 0; i--) {\n            chain[i].setTarget(next);\n            next = chain[i];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor visitMethod(int access,\n                                     String name, String desc,\n                                     String signature,\n                                     String[] exceptions) { return cv.visitMethod(access, name, desc, signature, exceptions);\n    }\n\n    @Override public String toString() { StringBuilder sb = new StringBuilder();\n        sb.append(\"ClassTransformerChain{\"); for (int i = 0; i < chain.length; i++) {\n            if (i > 0) {\n                sb.append(\", \");\n            } sb.append(chain[i].toString()); }\n        sb.append(\"}\"); return sb.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "c2b0fb473d15e69251ca1b5863c07a005ca2151846bdb12d28af1f036557b0ef", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "partially-compact-layout", "level": 10, "line_count": 29, "local_path": "layout/partially-compact-layout/I10__spring-framework__ClassTransformerChain__d4244fbd.java", "order": 10, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 39, "line_break_groups_removed": 15, "line_breaks_removed": 16, "whitespace_characters_removed": 125}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-219cd4244fbd-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1117, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1bd7d6d96248-I11", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] chain) {\n        this.chain = chain.clone();\n    }\n\n    @Override\n\tpublic void setTarget(ClassVisitor v) {\n        final int a = 1;\n        final int b = -1;\n        super.setTarget(chain[(a + b)]);\n        ClassVisitor next = v;\n        final int c = 2;\n        final int d = -1;\n        final int e = 1;\n        final int f = -1;\n        for (int i = chain.length - (c + d); i >= (e + f); i--) {\n            chain[i].setTarget(next);\n            next = chain[i];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor visitMethod(int access,\n                                     String name,\n                                     String desc,\n                                     String signature,\n                                     String[] exceptions) {\n        return cv.visitMethod(access, name, desc, signature, exceptions);\n    }\n\n    @Override\n\tpublic String toString() {\n\t\tStringBuilder sb = new StringBuilder();\n        sb.append(\"ClassTransformerChain{\");\n        final int g = 1;\n        final int h = -1;\n        for (int i = (g + h); i < chain.length; i++) {\n            final int j = 1;\n            final int k = -1;\n            if (i > (j + k)) {\n                sb.append(\", \");\n            }\n            sb.append(chain[i].toString());\n        }\n        sb.append(\"}\");\n        return sb.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "1260c17941b09c369ea28d3ac46ee4158c40f0e696a6d980e0936d5b2121771b", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 55, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__ClassTransformerChain__d6d96248.java", "order": 11, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 5, "intermediate_variables_introduced": 10, "statements_augmented": 4}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-1bd7d6d96248-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1118, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-826939770a22-I12", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] chain) {\n        this.chain = chain.clone();\n    }\n\n    @Override\n\tpublic void setTarget(ClassVisitor v) {\n        super.setTarget(chain[0]);\n        ClassVisitor next = v;\n        for (int i = chain.length - 1; i >= 0; i--) {\n            chain[i].setTarget(next);\n            next = chain[i];\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor visitMethod(int access,\n                                     String name,\n                                     String desc,\n                                     String signature,\n                                     String[] exceptions) {\n        return cv.visitMethod(access, name, desc, signature, exceptions);\n    }\n\n    @Override\n\tpublic String toString() {\n\t\tStringBuilder sb = new StringBuilder();\n        sb.append(\"ClassTransformerChain{\");\n        for (int i = 0; i < chain.length; i++) {\n            if (i > 0) {\n                sb.append(\", \");\n            }\n            sb.append(chain[i].toString());\n        }\n        sb.append(\"}\");\n        return sb.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 45, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__ClassTransformerChain__39770a22.java", "order": 12, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-826939770a22-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1119, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d04329992a89-I13", "source": "package org.springframework.cglib.transform;\nimport org.springframework.asm.ClassVisitor;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.cglib.core.ClassTransformer;\n\npublic class ClassTransformerChain extends AbstractClassTransformer {\n    private ClassTransformer[] chain;\n\n    public ClassTransformerChain(ClassTransformer[] chain) {\n        this.chain = chain.clone();\n    }\n\n    @Override\n\tpublic void setTarget(ClassVisitor v) {\n        super.setTarget(chain[0]);\n        ClassVisitor next = v;\n        {\n          int i = chain.length - 1;\n          while (i >= 0) {\n            chain[i].setTarget(next);\n            next = chain[i];\n            i--;\n          }\n        }\n    }\n\n    @Override\n\tpublic MethodVisitor visitMethod(int access,\n                                     String name,\n                                     String desc,\n                                     String signature,\n                                     String[] exceptions) {\n        return cv.visitMethod(access, name, desc, signature, exceptions);\n    }\n\n    @Override\n\tpublic String toString() {\n\t\tStringBuilder sb = new StringBuilder();\n        sb.append(\"ClassTransformerChain{\");\n        {\n          int i = 0;\n          while (i < chain.length) {\n            if (i > 0) {\n                sb.append(\", \");\n            }\n            sb.append(chain[i].toString());\n            i++;\n          }\n        }\n        sb.append(\"}\");\n        return sb.toString();\n    }\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__ClassTransformerChain__b0fcef32.java", "base_sample_id": "source-f77fd320ed5492f0", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "f9cf46a5599f923398873b305a0462cd92d78ebf9a46f2a2136d00415e8dd46d", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java", "interference": "lower-for-to-while", "level": 13, "line_count": 53, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__ClassTransformerChain__29992a89.java", "order": 13, "original_content_sha256": "5dc312a21cb425e334bdfd1989dd84dd147b1fab23e2ca2777e67e21153e6211", "parent_variant_id": "int-04dab0fcef32-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/cglib/transform/ClassTransformerChain.java#L22-L61", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 2, "classic_for_loops_found": 2, "classic_for_loops_lowered_to_while": 2, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 2, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ClassTransformerChain", "variant_id": "int-d04329992a89-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1120, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7e1a39c53da0-SRC", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n/**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n\t}\n\n\n\t/**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */\n\tpublic static <T> Map<Method, T> selectMethods(Class<?> targetType, final MetadataLookup<T> metadataLookup) {\n\t\tfinal Map<Method, T> methodMap = new LinkedHashMap<>();\n\t\tSet<Class<?>> handlerTypes = new LinkedHashSet<>();\n\t\tClass<?> specificHandlerType = null;\n\n\t\tif (!Proxy.isProxyClass(targetType)) {\n\t\t\tspecificHandlerType = ClassUtils.getUserClass(targetType);\n\t\t\thandlerTypes.add(specificHandlerType);\n\t\t}\n\t\thandlerTypes.addAll(ClassUtils.getAllInterfacesForClassAsSet(targetType));\n\n\t\tfor (Class<?> currentHandlerType : handlerTypes) {\n\t\t\tfinal Class<?> targetClass = (specificHandlerType != null ? specificHandlerType : currentHandlerType);\n\n\t\t\tReflectionUtils.doWithMethods(currentHandlerType, method -> {\n\t\t\t\tMethod specificMethod = ClassUtils.getMostSpecificMethod(method, targetClass);\n\t\t\t\tT result = metadataLookup.inspect(specificMethod);\n\t\t\t\tif (result != null) {\n\t\t\t\t\tMethod bridgedMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);\n\t\t\t\t\tif (bridgedMethod == specificMethod || bridgedMethod == method ||\n\t\t\t\t\t\t\tbridgedMethod.equals(specificMethod) || bridgedMethod.equals(method) ||\n\t\t\t\t\t\t\tmetadataLookup.inspect(bridgedMethod) == null) {\n\t\t\t\t\t\tmethodMap.put(specificMethod, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn methodMap;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */\n\tpublic static Set<Method> selectMethods(Class<?> targetType, final ReflectionUtils.MethodFilter methodFilter) {\n\t\treturn selectMethods(targetType,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (methodFilter.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t/**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */\n\tpublic static Method selectInvocableMethod(Method method, Class<?> targetType) {\n\t\tif (method.getDeclaringClass().isAssignableFrom(targetType)) {\n\t\t\treturn method;\n\t\t}\n\t\ttry {\n\t\t\tString methodName = method.getName();\n\t\t\tClass<?>[] parameterTypes = method.getParameterTypes();\n\t\t\tfor (Class<?> ifc : targetType.getInterfaces()) {\n\t\t\t\ttry {\n\t\t\t\t\treturn ifc.getMethod(methodName, parameterTypes);\n\t\t\t\t}\n\t\t\t\tcatch (NoSuchMethodException ex) {\n\t\t\t\t\t// Alright, not on this interface then...\n\t\t\t\t}\n\t\t\t}\n\t\t\t// A final desperate attempt on the proxy class itself...\n\t\t\treturn targetType.getMethod(methodName, parameterTypes);\n\t\t}\n\t\tcatch (NoSuchMethodException ex) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tmethod.getName(), method.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T inspect(Method method);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": null, "level": 0, "line_count": 143, "local_path": "source-original/SRC__spring-framework__MethodIntrospector__39c53da0.java", "order": 0, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-7e1a39c53da0-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1219, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6d0e138fb673-I01", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n\n\n\n\n\n\n\n\n\n\n\n\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n\t}\n\n\n\t\n\n\n\n\n\n\n\n\n\n\n\tpublic static <T> Map<Method, T> selectMethods(Class<?> targetType, final MetadataLookup<T> metadataLookup) {\n\t\tfinal Map<Method, T> methodMap = new LinkedHashMap<>();\n\t\tSet<Class<?>> handlerTypes = new LinkedHashSet<>();\n\t\tClass<?> specificHandlerType = null;\n\n\t\tif (!Proxy.isProxyClass(targetType)) {\n\t\t\tspecificHandlerType = ClassUtils.getUserClass(targetType);\n\t\t\thandlerTypes.add(specificHandlerType);\n\t\t}\n\t\thandlerTypes.addAll(ClassUtils.getAllInterfacesForClassAsSet(targetType));\n\n\t\tfor (Class<?> currentHandlerType : handlerTypes) {\n\t\t\tfinal Class<?> targetClass = (specificHandlerType != null ? specificHandlerType : currentHandlerType);\n\n\t\t\tReflectionUtils.doWithMethods(currentHandlerType, method -> {\n\t\t\t\tMethod specificMethod = ClassUtils.getMostSpecificMethod(method, targetClass);\n\t\t\t\tT result = metadataLookup.inspect(specificMethod);\n\t\t\t\tif (result != null) {\n\t\t\t\t\tMethod bridgedMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);\n\t\t\t\t\tif (bridgedMethod == specificMethod || bridgedMethod == method ||\n\t\t\t\t\t\t\tbridgedMethod.equals(specificMethod) || bridgedMethod.equals(method) ||\n\t\t\t\t\t\t\tmetadataLookup.inspect(bridgedMethod) == null) {\n\t\t\t\t\t\tmethodMap.put(specificMethod, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn methodMap;\n\t}\n\n\t\n\n\n\n\n\n\n\n\tpublic static Set<Method> selectMethods(Class<?> targetType, final ReflectionUtils.MethodFilter methodFilter) {\n\t\treturn selectMethods(targetType,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (methodFilter.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\tpublic static Method selectInvocableMethod(Method method, Class<?> targetType) {\n\t\tif (method.getDeclaringClass().isAssignableFrom(targetType)) {\n\t\t\treturn method;\n\t\t}\n\t\ttry {\n\t\t\tString methodName = method.getName();\n\t\t\tClass<?>[] parameterTypes = method.getParameterTypes();\n\t\t\tfor (Class<?> ifc : targetType.getInterfaces()) {\n\t\t\t\ttry {\n\t\t\t\t\treturn ifc.getMethod(methodName, parameterTypes);\n\t\t\t\t}\n\t\t\t\tcatch (NoSuchMethodException ex) {\n\t\t\t\t\t \n\t\t\t\t}\n\t\t\t}\n\t\t\t \n\t\t\treturn targetType.getMethod(methodName, parameterTypes);\n\t\t}\n\t\tcatch (NoSuchMethodException ex) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tmethod.getName(), method.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t\n\n\n\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t\n\n\n\n\n\n\t\t@Nullable T inspect(Method method);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "cd4c75b257cceb4b2d5554d2685d2719a7917c2f4e03df46d7d2acb9a7f7e56a", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "remove-comments", "level": 1, "line_count": 143, "local_path": "comments/remove-comments/I01__spring-framework__MethodIntrospector__138fb673.java", "order": 1, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 2656, "comments_removed": 8}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-6d0e138fb673-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1220, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7a7b6ed539e7-I02", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n/**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n\t}\n\n\n\t/**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */\n\tpublic static <T> Map<Method, T> select(Class<?> target, final MetadataLookup<T> metadata) {\n\t\tfinal Map<Method, T> method2 = new LinkedHashMap<>();\n\t\tSet<Class<?>> handler = new LinkedHashSet<>();\n\t\tClass<?> specific = null;\n\n\t\tif (!Proxy.isProxyClass(target)) {\n\t\t\tspecific = ClassUtils.getUserClass(target);\n\t\t\thandler.add(specific);\n\t\t}\n\t\thandler.addAll(ClassUtils.getAllInterfacesForClassAsSet(target));\n\n\t\tfor (Class<?> current : handler) {\n\t\t\tfinal Class<?> target2 = (specific != null ? specific : current);\n\n\t\t\tReflectionUtils.doWithMethods(current, method -> {\n\t\t\t\tMethod specific2 = ClassUtils.getMostSpecificMethod(method, target2);\n\t\t\t\tT res = metadata.inspect(specific2);\n\t\t\t\tif (res != null) {\n\t\t\t\t\tMethod bridged = BridgeMethodResolver.findBridgedMethod(specific2);\n\t\t\t\t\tif (bridged == specific2 || bridged == method ||\n\t\t\t\t\t\t\tbridged.equals(specific2) || bridged.equals(method) ||\n\t\t\t\t\t\t\tmetadata.inspect(bridged) == null) {\n\t\t\t\t\t\tmethod2.put(specific2, res);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn method2;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */\n\tpublic static Set<Method> select(Class<?> target3, final ReflectionUtils.MethodFilter method3) {\n\t\treturn select(target3,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (method3.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t/**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */\n\tpublic static Method select2(Method met, Class<?> target4) {\n\t\tif (met.getDeclaringClass().isAssignableFrom(target4)) {\n\t\t\treturn met;\n\t\t}\n\t\ttry {\n\t\t\tString method = met.getName();\n\t\t\tClass<?>[] parameter = met.getParameterTypes();\n\t\t\tfor (Class<?> ifc : target4.getInterfaces()) {\n\t\t\t\ttry {\n\t\t\t\t\treturn ifc.getMethod(method, parameter);\n\t\t\t\t}\n\t\t\t\tcatch (NoSuchMethodException ex) {\n\t\t\t\t\t// Alright, not on this interface then...\n\t\t\t\t}\n\t\t\t}\n\t\t\t// A final desperate attempt on the proxy class itself...\n\t\t\treturn target4.getMethod(method, parameter);\n\t\t}\n\t\tcatch (NoSuchMethodException ex) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tmet.getName(), met.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T ins(Method met2);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "ebb1dbe09feedb2c4d0adea6a64599a13217c407ca14f047bde1c0ab6f0ba92e", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "shorten-identifiers", "level": 2, "line_count": 143, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__MethodIntrospector__6ed539e7.java", "order": 2, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 45, "identifiers_declared": 20, "local_name_collisions_avoided": 7, "method_calls_renamed": 1, "method_declarations_renamed": 4, "method_name_collisions_avoided": 1, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-7a7b6ed539e7-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1221, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7a99c744122b-I03", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n/**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n\t}\n\n\n\t/**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */\n\tpublic static <T> Map<Method, T> validateCache(Class<?> remotePath, final MetadataLookup<T> defaultRequest) {\n\t\tfinal Map<Method, T> nextToken = new LinkedHashMap<>();\n\t\tSet<Class<?>> defaultIndex = new LinkedHashSet<>();\n\t\tClass<?> defaultSession = null;\n\n\t\tif (!Proxy.isProxyClass(remotePath)) {\n\t\t\tdefaultSession = ClassUtils.getUserClass(remotePath);\n\t\t\tdefaultIndex.add(defaultSession);\n\t\t}\n\t\tdefaultIndex.addAll(ClassUtils.getAllInterfacesForClassAsSet(remotePath));\n\n\t\tfor (Class<?> currentAccount : defaultIndex) {\n\t\t\tfinal Class<?> cachedScore = (defaultSession != null ? defaultSession : currentAccount);\n\n\t\t\tReflectionUtils.doWithMethods(currentAccount, method -> {\n\t\t\t\tMethod primaryAccount = ClassUtils.getMostSpecificMethod(method, cachedScore);\n\t\t\t\tT window = defaultRequest.inspect(primaryAccount);\n\t\t\t\tif (window != null) {\n\t\t\t\t\tMethod remoteBalance = BridgeMethodResolver.findBridgedMethod(primaryAccount);\n\t\t\t\t\tif (remoteBalance == primaryAccount || remoteBalance == method ||\n\t\t\t\t\t\t\tremoteBalance.equals(primaryAccount) || remoteBalance.equals(method) ||\n\t\t\t\t\t\t\tdefaultRequest.inspect(remoteBalance) == null) {\n\t\t\t\t\t\tnextToken.put(primaryAccount, window);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn nextToken;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */\n\tpublic static Set<Method> validateCache(Class<?> cachedItem, final ReflectionUtils.MethodFilter secureWindow) {\n\t\treturn validateCache(cachedItem,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (secureWindow.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t/**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */\n\tpublic static Method validateSession(Method amount, Class<?> sharedData) {\n\t\tif (amount.getDeclaringClass().isAssignableFrom(sharedData)) {\n\t\t\treturn amount;\n\t\t}\n\t\ttry {\n\t\t\tString finalOrder = amount.getName();\n\t\t\tClass<?>[] currentRequest = amount.getParameterTypes();\n\t\t\tfor (Class<?> key : sharedData.getInterfaces()) {\n\t\t\t\ttry {\n\t\t\t\t\treturn key.getMethod(finalOrder, currentRequest);\n\t\t\t\t}\n\t\t\t\tcatch (NoSuchMethodException age) {\n\t\t\t\t\t// Alright, not on this interface then...\n\t\t\t\t}\n\t\t\t}\n\t\t\t// A final desperate attempt on the proxy class itself...\n\t\t\treturn sharedData.getMethod(finalOrder, currentRequest);\n\t\t}\n\t\tcatch (NoSuchMethodException map) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tamount.getName(), amount.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T publish(Method source);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "0ab5d69480f606418d83fe27446ed93d281d00ce89bca9be3d704604f637b9b4", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "mislead-identifiers", "level": 3, "line_count": 143, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__MethodIntrospector__c744122b.java", "order": 3, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 45, "identifiers_declared": 20, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 4, "local_exact_length_matches": 16, "local_random_pool_selections": 20, "local_total_length_difference": 11, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 1, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 2, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 6}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-7a99c744122b-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1222, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-80014ceb2bcd-I04", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n/**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n\t}\n\n\n\t/**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */\n\tpublic static <T> Map<Method, T> a(Class<?> a, final MetadataLookup<T> b) {\n\t\tfinal Map<Method, T> c = new LinkedHashMap<>();\n\t\tSet<Class<?>> d = new LinkedHashSet<>();\n\t\tClass<?> e = null;\n\n\t\tif (!Proxy.isProxyClass(a)) {\n\t\t\te = ClassUtils.getUserClass(a);\n\t\t\td.add(e);\n\t\t}\n\t\td.addAll(ClassUtils.getAllInterfacesForClassAsSet(a));\n\n\t\tfor (Class<?> f : d) {\n\t\t\tfinal Class<?> g = (e != null ? e : f);\n\n\t\t\tReflectionUtils.doWithMethods(f, method -> {\n\t\t\t\tMethod h = ClassUtils.getMostSpecificMethod(method, g);\n\t\t\t\tT i = b.inspect(h);\n\t\t\t\tif (i != null) {\n\t\t\t\t\tMethod j = BridgeMethodResolver.findBridgedMethod(h);\n\t\t\t\t\tif (j == h || j == method ||\n\t\t\t\t\t\t\tj.equals(h) || j.equals(method) ||\n\t\t\t\t\t\t\tb.inspect(j) == null) {\n\t\t\t\t\t\tc.put(h, i);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn c;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */\n\tpublic static Set<Method> a(Class<?> k, final ReflectionUtils.MethodFilter l) {\n\t\treturn a(k,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (l.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t/**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */\n\tpublic static Method b(Method m, Class<?> n) {\n\t\tif (m.getDeclaringClass().isAssignableFrom(n)) {\n\t\t\treturn m;\n\t\t}\n\t\ttry {\n\t\t\tString o = m.getName();\n\t\t\tClass<?>[] p = m.getParameterTypes();\n\t\t\tfor (Class<?> q : n.getInterfaces()) {\n\t\t\t\ttry {\n\t\t\t\t\treturn q.getMethod(o, p);\n\t\t\t\t}\n\t\t\t\tcatch (NoSuchMethodException r) {\n\t\t\t\t\t// Alright, not on this interface then...\n\t\t\t\t}\n\t\t\t}\n\t\t\t// A final desperate attempt on the proxy class itself...\n\t\t\treturn n.getMethod(o, p);\n\t\t}\n\t\tcatch (NoSuchMethodException s) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tm.getName(), m.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T a(Method t);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e6af5d8bff35d83cfffbef2566b79bfe1513e439784cd0c7ac1a47dd317e3d53", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "garble-identifiers", "level": 4, "line_count": 143, "local_path": "identifiers/garble-identifiers/I04__spring-framework__MethodIntrospector__4ceb2bcd.java", "order": 4, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 45, "identifiers_declared": 20, "local_name_collisions_avoided": 0, "method_calls_renamed": 1, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-80014ceb2bcd-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1223, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-100043cd5706-I05", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n/**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n\t}\n\n\n\t/**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */\n\tpublic static <T> Map<Method, T> selectMethods(Class<?> targetType, final MetadataLookup<T> metadataLookup) {\n\t\tfinal Map<Method, T> methodMap = new LinkedHashMap<>();\n\t\tSet<Class<?>> handlerTypes = new LinkedHashSet<>();\n\t\tClass<?> specificHandlerType = null;\n\n\t\tif (!Proxy.isProxyClass(targetType)) {\n\t\t\tspecificHandlerType = ClassUtils.getUserClass(targetType);\n\t\t\thandlerTypes.add(specificHandlerType);\n\t\t}\n\t\thandlerTypes.addAll(ClassUtils.getAllInterfacesForClassAsSet(targetType));\n\n\t\tfor (Class<?> currentHandlerType : handlerTypes) {\n\t\t\tfinal Class<?> targetClass = (specificHandlerType != null ? specificHandlerType : currentHandlerType);\n\n\t\t\tReflectionUtils.doWithMethods(currentHandlerType, method -> {\n\t\t\t\tMethod specificMethod = ClassUtils.getMostSpecificMethod(method, targetClass);\n\t\t\t\tT result = metadataLookup.inspect(specificMethod);\n\t\t\t\tif (result != null) {\n\t\t\t\t\tMethod bridgedMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);\n\t\t\t\t\tif (bridgedMethod == specificMethod || bridgedMethod == method ||\n\t\t\t\t\t\t\tbridgedMethod.equals(specificMethod) || bridgedMethod.equals(method) ||\n\t\t\t\t\t\t\tmetadataLookup.inspect(bridgedMethod) == null) {\n\t\t\t\t\t\tmethodMap.put(specificMethod, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn methodMap;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */\n\tpublic static Set<Method> selectMethods(Class<?> targetType, final ReflectionUtils.MethodFilter methodFilter) {\n\t\treturn selectMethods(targetType,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (methodFilter.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t/**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */\n\tpublic static Method selectInvocableMethod(Method method, Class<?> targetType) {\n\t\tif (method.getDeclaringClass().isAssignableFrom(targetType)) {\n\t\t\treturn method;\n\t\t}\n\t\ttry {\n\t\t\tString methodName = method.getName();\n\t\t\tClass<?>[] parameterTypes = method.getParameterTypes();\n\t\t\tfor (Class<?> ifc : targetType.getInterfaces()) {\n\t\t\t\ttry {\n\t\t\t\t\treturn ifc.getMethod(methodName, parameterTypes);\n\t\t\t\t}\n\t\t\t\tcatch (NoSuchMethodException ex) {\n\t\t\t\t\t// Alright, not on this interface then...\n\t\t\t\t}\n\t\t\t}\n\t\t\t// A final desperate attempt on the proxy class itself...\n\t\t\treturn targetType.getMethod(methodName, parameterTypes);\n\t\t}\n\t\tcatch (NoSuchMethodException ex) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tmethod.getName(), method.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T inspect(Method method);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "encode-integer-literals", "level": 5, "line_count": 143, "local_path": "expressions/encode-integer-literals/I05__spring-framework__MethodIntrospector__43cd5706.java", "order": 5, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-100043cd5706-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1224, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3c1a33076bc7-I06", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n/**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n\t}\n\n\n\t/**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */\n\tpublic static <T> Map<Method, T> selectMethods(Class<?> targetType, final MetadataLookup<T> metadataLookup) {\n\t\tfinal Map<Method, T> methodMap = new LinkedHashMap<>();\n\t\tSet<Class<?>> handlerTypes = new LinkedHashSet<>();\n\t\tClass<?> specificHandlerType = null;\n\n\t\tif (!((!Proxy.isProxyClass(targetType)))) {} else {\n\t\t\tspecificHandlerType = ClassUtils.getUserClass(targetType);\n\t\t\thandlerTypes.add(specificHandlerType);\n\t\t}\n\t\thandlerTypes.addAll(ClassUtils.getAllInterfacesForClassAsSet(targetType));\n\n\t\tfor (Class<?> currentHandlerType : handlerTypes) {\n\t\t\tfinal Class<?> targetClass = (specificHandlerType != null ? specificHandlerType : currentHandlerType);\n\n\t\t\tReflectionUtils.doWithMethods(currentHandlerType, method -> {\n\t\t\t\tMethod specificMethod = ClassUtils.getMostSpecificMethod(method, targetClass);\n\t\t\t\tT result = metadataLookup.inspect(specificMethod);\n\t\t\t\tif (!((result != null))) {} else {\n\t\t\t\t\tMethod bridgedMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);\n\t\t\t\t\tif (bridgedMethod == specificMethod || bridgedMethod == method ||\n\t\t\t\t\t\t\tbridgedMethod.equals(specificMethod) || bridgedMethod.equals(method) ||\n\t\t\t\t\t\t\tmetadataLookup.inspect(bridgedMethod) == null) {\n\t\t\t\t\t\tmethodMap.put(specificMethod, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn methodMap;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */\n\tpublic static Set<Method> selectMethods(Class<?> targetType, final ReflectionUtils.MethodFilter methodFilter) {\n\t\treturn selectMethods(targetType,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (methodFilter.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t/**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */\n\tpublic static Method selectInvocableMethod(Method method, Class<?> targetType) {\n\t\tif (!((method.getDeclaringClass().isAssignableFrom(targetType)))) {} else {\n\t\t\treturn method;\n\t\t}\n\t\ttry {\n\t\t\tString methodName = method.getName();\n\t\t\tClass<?>[] parameterTypes = method.getParameterTypes();\n\t\t\tfor (Class<?> ifc : targetType.getInterfaces()) {\n\t\t\t\ttry {\n\t\t\t\t\treturn ifc.getMethod(methodName, parameterTypes);\n\t\t\t\t}\n\t\t\t\tcatch (NoSuchMethodException ex) {\n\t\t\t\t\t// Alright, not on this interface then...\n\t\t\t\t}\n\t\t\t}\n\t\t\t// A final desperate attempt on the proxy class itself...\n\t\t\treturn targetType.getMethod(methodName, parameterTypes);\n\t\t}\n\t\tcatch (NoSuchMethodException ex) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tmethod.getName(), method.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T inspect(Method method);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "6512e3655b05ecaface0d178e8129f2cd1bade427907a4600f8ea455b7a5ba4a", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "invert-conditions", "level": 6, "line_count": 143, "local_path": "expressions/invert-conditions/I06__spring-framework__MethodIntrospector__33076bc7.java", "order": 6, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 3}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-3c1a33076bc7-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1225, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0cedf9f2a4be-I07", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n/**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\nif (((0xB004 ^ 0xB004) != 0)) { throw new AssertionError(); }\n\n\t}\n\n\n\t/**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */\n\tpublic static <T> Map<Method, T> selectMethods(Class<?> targetType, final MetadataLookup<T> metadataLookup) {\nif (((0x1985 ^ 0x1985) != 0)) { throw new AssertionError(); }\n\n\t\tfinal Map<Method, T> methodMap = new LinkedHashMap<>();\n\t\tSet<Class<?>> handlerTypes = new LinkedHashSet<>();\n\t\tClass<?> specificHandlerType = null;\n\n\t\tif (!Proxy.isProxyClass(targetType)) {\n\t\t\tspecificHandlerType = ClassUtils.getUserClass(targetType);\n\t\t\thandlerTypes.add(specificHandlerType);\n\t\t}\n\t\thandlerTypes.addAll(ClassUtils.getAllInterfacesForClassAsSet(targetType));\n\n\t\tfor (Class<?> currentHandlerType : handlerTypes) {\n\t\t\tfinal Class<?> targetClass = (specificHandlerType != null ? specificHandlerType : currentHandlerType);\n\n\t\t\tReflectionUtils.doWithMethods(currentHandlerType, method -> {\n\t\t\t\tMethod specificMethod = ClassUtils.getMostSpecificMethod(method, targetClass);\n\t\t\t\tT result = metadataLookup.inspect(specificMethod);\n\t\t\t\tif (result != null) {\n\t\t\t\t\tMethod bridgedMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);\n\t\t\t\t\tif (bridgedMethod == specificMethod || bridgedMethod == method ||\n\t\t\t\t\t\t\tbridgedMethod.equals(specificMethod) || bridgedMethod.equals(method) ||\n\t\t\t\t\t\t\tmetadataLookup.inspect(bridgedMethod) == null) {\n\t\t\t\t\t\tmethodMap.put(specificMethod, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn methodMap;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */\n\tpublic static Set<Method> selectMethods(Class<?> targetType, final ReflectionUtils.MethodFilter methodFilter) {\nif (((0xCD45 ^ 0xCD45) != 0)) { throw new AssertionError(); }\n\n\t\treturn selectMethods(targetType,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (methodFilter.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t/**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */\n\tpublic static Method selectInvocableMethod(Method method, Class<?> targetType) {\nif (((0x19BA ^ 0x19BA) != 0)) { throw new AssertionError(); }\n\n\t\tif (method.getDeclaringClass().isAssignableFrom(targetType)) {\n\t\t\treturn method;\n\t\t}\n\t\ttry {\n\t\t\tString methodName = method.getName();\n\t\t\tClass<?>[] parameterTypes = method.getParameterTypes();\n\t\t\tfor (Class<?> ifc : targetType.getInterfaces()) {\n\t\t\t\ttry {\n\t\t\t\t\treturn ifc.getMethod(methodName, parameterTypes);\n\t\t\t\t}\n\t\t\t\tcatch (NoSuchMethodException ex) {\n\t\t\t\t\t// Alright, not on this interface then...\n\t\t\t\t}\n\t\t\t}\n\t\t\t// A final desperate attempt on the proxy class itself...\n\t\t\treturn targetType.getMethod(methodName, parameterTypes);\n\t\t}\n\t\tcatch (NoSuchMethodException ex) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tmethod.getName(), method.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T inspect(Method method);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "3eac2d59ed7722bb19dd5519acdc631981b3624da0d8a12efb24712b99f0081a", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "insert-dead-branches", "level": 7, "line_count": 151, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__MethodIntrospector__f9f2a4be.java", "order": 7, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-0cedf9f2a4be-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1226, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b22b2c04d181-I08", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n/**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n{\n  boolean featureEnabled = false;\n  for (int toggleCount = 0; toggleCount < 3; toggleCount++) {\n    featureEnabled = !featureEnabled;\n  }\n}\n\n\t}\n\n\n\t/**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */\n\tpublic static <T> Map<Method, T> selectMethods(Class<?> targetType, final MetadataLookup<T> metadataLookup) {\n\t\tfinal Map<Method, T> methodMap = new LinkedHashMap<>();\n\t\tSet<Class<?>> handlerTypes = new LinkedHashSet<>();\n\t\tClass<?> specificHandlerType = null;\n\n\t\tif (!Proxy.isProxyClass(targetType)) {\n\t\t\tspecificHandlerType = ClassUtils.getUserClass(targetType);\n\t\t\thandlerTypes.add(specificHandlerType);\n\t\t}\n\t\thandlerTypes.addAll(ClassUtils.getAllInterfacesForClassAsSet(targetType));\n\n\t\tfor (Class<?> currentHandlerType : handlerTypes) {\n\t\t\tfinal Class<?> targetClass = (specificHandlerType != null ? specificHandlerType : currentHandlerType);\n\n\t\t\tReflectionUtils.doWithMethods(currentHandlerType, method -> {\n\t\t\t\tMethod specificMethod = ClassUtils.getMostSpecificMethod(method, targetClass);\n\t\t\t\tT result = metadataLookup.inspect(specificMethod);\n\t\t\t\tif (result != null) {\n\t\t\t\t\tMethod bridgedMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);\n\t\t\t\t\tif (bridgedMethod == specificMethod || bridgedMethod == method ||\n\t\t\t\t\t\t\tbridgedMethod.equals(specificMethod) || bridgedMethod.equals(method) ||\n\t\t\t\t\t\t\tmetadataLookup.inspect(bridgedMethod) == null) {\n\t\t\t\t\t\tmethodMap.put(specificMethod, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn methodMap;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */\n\tpublic static Set<Method> selectMethods(Class<?> targetType, final ReflectionUtils.MethodFilter methodFilter) {\n\t\treturn selectMethods(targetType,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (methodFilter.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t/**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */\n\tpublic static Method selectInvocableMethod(Method method, Class<?> targetType) {\n\t\tif (method.getDeclaringClass().isAssignableFrom(targetType)) {\n\t\t\treturn method;\n\t\t}\n\t\ttry {\n\t\t\tString methodName = method.getName();\n\t\t\tClass<?>[] parameterTypes = method.getParameterTypes();\n\t\t\tfor (Class<?> ifc : targetType.getInterfaces()) {\n\t\t\t\ttry {\n\t\t\t\t\treturn ifc.getMethod(methodName, parameterTypes);\n\t\t\t\t}\n\t\t\t\tcatch (NoSuchMethodException ex) {\n\t\t\t\t\t// Alright, not on this interface then...\n\t\t\t\t}\n\t\t\t}\n\t\t\t// A final desperate attempt on the proxy class itself...\n\t\t\treturn targetType.getMethod(methodName, parameterTypes);\n\t\t}\n\t\tcatch (NoSuchMethodException ex) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tmethod.getName(), method.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T inspect(Method method);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "69be16aeb6ec6ed6b903c7c6b9224a2583f5ddde61e1e9a8670007b819beaeef", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 150, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__MethodIntrospector__2c04d181.java", "order": 8, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 7}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-b22b2c04d181-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1227, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a6d83ced569a-I09", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n/**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n\t}\n\n\n\t/**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */\n\tpublic static <T> Map<Method, T> selectMethods(Class<?> targetType, final MetadataLookup<T> metadataLookup) {\n{int lI0O_fd22ed78=0,lI0O_7c2d73a9=0;while(lI0O_7c2d73a9<2){lI0O_fd22ed78^=(lI0O_7c2d73a9<<1)^0xE;lI0O_7c2d73a9++;}lI0O_fd22ed78^=lI0O_fd22ed78;}\n\n\t\tfinal Map<Method, T> methodMap = new LinkedHashMap<>();\n\t\tSet<Class<?>> handlerTypes = new LinkedHashSet<>();\n\t\tClass<?> specificHandlerType = null;\n\n\t\tif (!Proxy.isProxyClass(targetType)) {\n\t\t\tspecificHandlerType = ClassUtils.getUserClass(targetType);\n\t\t\thandlerTypes.add(specificHandlerType);\n\t\t}\n\t\thandlerTypes.addAll(ClassUtils.getAllInterfacesForClassAsSet(targetType));\n\n\t\tfor (Class<?> currentHandlerType : handlerTypes) {\n\t\t\tfinal Class<?> targetClass = (specificHandlerType != null ? specificHandlerType : currentHandlerType);\n\n\t\t\tReflectionUtils.doWithMethods(currentHandlerType, method -> {\n\t\t\t\tMethod specificMethod = ClassUtils.getMostSpecificMethod(method, targetClass);\n\t\t\t\tT result = metadataLookup.inspect(specificMethod);\n\t\t\t\tif (result != null) {\n\t\t\t\t\tMethod bridgedMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);\n\t\t\t\t\tif (bridgedMethod == specificMethod || bridgedMethod == method ||\n\t\t\t\t\t\t\tbridgedMethod.equals(specificMethod) || bridgedMethod.equals(method) ||\n\t\t\t\t\t\t\tmetadataLookup.inspect(bridgedMethod) == null) {\n\t\t\t\t\t\tmethodMap.put(specificMethod, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn methodMap;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */\n\tpublic static Set<Method> selectMethods(Class<?> targetType, final ReflectionUtils.MethodFilter methodFilter) {\n\t\treturn selectMethods(targetType,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (methodFilter.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t/**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */\n\tpublic static Method selectInvocableMethod(Method method, Class<?> targetType) {\n\t\tif (method.getDeclaringClass().isAssignableFrom(targetType)) {\n\t\t\treturn method;\n\t\t}\n\t\ttry {\n\t\t\tString methodName = method.getName();\n\t\t\tClass<?>[] parameterTypes = method.getParameterTypes();\n\t\t\tfor (Class<?> ifc : targetType.getInterfaces()) {\n\t\t\t\ttry {\n\t\t\t\t\treturn ifc.getMethod(methodName, parameterTypes);\n\t\t\t\t}\n\t\t\t\tcatch (NoSuchMethodException ex) {\n\t\t\t\t\t// Alright, not on this interface then...\n\t\t\t\t}\n\t\t\t}\n\t\t\t// A final desperate attempt on the proxy class itself...\n\t\t\treturn targetType.getMethod(methodName, parameterTypes);\n\t\t}\n\t\tcatch (NoSuchMethodException ex) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tmethod.getName(), method.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T inspect(Method method);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "0960df2057fd8d5ac25d288adea787167b0099dfc4ccdb67d86b266e8ed580f3", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 145, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__MethodIntrospector__3ced569a.java", "order": 9, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 2}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-a6d83ced569a-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1228, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d501db420bc3-I10", "source": "package org.springframework.core; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set; import org.jspecify.annotations.Nullable; import org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils; /**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n\t} /**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */ public static <T> Map<Method, T> selectMethods(Class<?> targetType, final MetadataLookup<T> metadataLookup) {\n\t\tfinal Map<Method, T> methodMap = new LinkedHashMap<>();\n\t\tSet<Class<?>> handlerTypes = new LinkedHashSet<>();\n\t\tClass<?> specificHandlerType = null; if (!Proxy.isProxyClass(targetType)) { specificHandlerType = ClassUtils.getUserClass(targetType); handlerTypes.add(specificHandlerType); } handlerTypes.addAll(ClassUtils.getAllInterfacesForClassAsSet(targetType));\n\n\t\tfor (Class<?> currentHandlerType : handlerTypes) {\n\t\t\tfinal Class<?> targetClass = (specificHandlerType != null ? specificHandlerType : currentHandlerType);\n\n\t\t\tReflectionUtils.doWithMethods(currentHandlerType, method -> {\n\t\t\t\tMethod specificMethod = ClassUtils.getMostSpecificMethod(method, targetClass);\n\t\t\t\tT result = metadataLookup.inspect(specificMethod);\n\t\t\t\tif (result != null) {\n\t\t\t\t\tMethod bridgedMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);\n\t\t\t\t\tif (bridgedMethod == specificMethod || bridgedMethod == method ||\n\t\t\t\t\t\t\tbridgedMethod.equals(specificMethod) || bridgedMethod.equals(method) || metadataLookup.inspect(bridgedMethod) == null) {\n\t\t\t\t\t\tmethodMap.put(specificMethod, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn methodMap;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */ public static Set<Method> selectMethods(Class<?> targetType, final ReflectionUtils.MethodFilter methodFilter) { return selectMethods(targetType,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (methodFilter.matches(method) ? Boolean.TRUE : null)).keySet(); } /**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */ public static Method selectInvocableMethod(Method method, Class<?> targetType) { if (method.getDeclaringClass().isAssignableFrom(targetType)) {\n\t\t\treturn method;\n\t\t} try { String methodName = method.getName(); Class<?>[] parameterTypes = method.getParameterTypes(); for (Class<?> ifc : targetType.getInterfaces()) {\n\t\t\t\ttry { return ifc.getMethod(methodName, parameterTypes); } catch (NoSuchMethodException ex) {\n\t\t\t\t\t// Alright, not on this interface then...\n\t\t\t\t}\n\t\t\t} // A final desperate attempt on the proxy class itself...\n\t\t\treturn targetType.getMethod(methodName, parameterTypes); }\n\t\tcatch (NoSuchMethodException ex) { throw new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tmethod.getName(), method.getDeclaringClass().getSimpleName()));\n\t\t} }\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T inspect(Method method);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "1bd4ed997cb213cb5447365213d9df2735c03ac92e877b8fa5656365af53bdf7", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "partially-compact-layout", "level": 10, "line_count": 107, "local_path": "layout/partially-compact-layout/I10__spring-framework__MethodIntrospector__db420bc3.java", "order": 10, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 78, "line_break_groups_removed": 31, "line_breaks_removed": 36, "whitespace_characters_removed": 67}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-d501db420bc3-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1229, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bb3a6731dbd5-I11", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n/**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n\t}\n\n\n\t/**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */\n\tpublic static <T> Map<Method, T> selectMethods(Class<?> targetType, final MetadataLookup<T> metadataLookup) {\n\t\tfinal Map<Method, T> methodMap = new LinkedHashMap<>();\n\t\tSet<Class<?>> handlerTypes = new LinkedHashSet<>();\n\t\tClass<?> specificHandlerType = null;\n\n\t\tif (!Proxy.isProxyClass(targetType)) {\n\t\t\tspecificHandlerType = ClassUtils.getUserClass(targetType);\n\t\t\thandlerTypes.add(specificHandlerType);\n\t\t}\n\t\thandlerTypes.addAll(ClassUtils.getAllInterfacesForClassAsSet(targetType));\n\n\t\tfor (Class<?> currentHandlerType : handlerTypes) {\n\t\t\tfinal Class<?> targetClass = (specificHandlerType != null ? specificHandlerType : currentHandlerType);\n\n\t\t\tReflectionUtils.doWithMethods(currentHandlerType, method -> {\n\t\t\t\tMethod specificMethod = ClassUtils.getMostSpecificMethod(method, targetClass);\n\t\t\t\tT result = metadataLookup.inspect(specificMethod);\n\t\t\t\tif (result != null) {\n\t\t\t\t\tMethod bridgedMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);\n\t\t\t\t\tif (bridgedMethod == specificMethod || bridgedMethod == method ||\n\t\t\t\t\t\t\tbridgedMethod.equals(specificMethod) || bridgedMethod.equals(method) ||\n\t\t\t\t\t\t\tmetadataLookup.inspect(bridgedMethod) == null) {\n\t\t\t\t\t\tmethodMap.put(specificMethod, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn methodMap;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */\n\tpublic static Set<Method> selectMethods(Class<?> targetType, final ReflectionUtils.MethodFilter methodFilter) {\n\t\treturn selectMethods(targetType,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (methodFilter.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t/**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */\n\tpublic static Method selectInvocableMethod(Method method, Class<?> targetType) {\n\t\tif (method.getDeclaringClass().isAssignableFrom(targetType)) {\n\t\t\treturn method;\n\t\t}\n\t\ttry {\n\t\t\tString methodName = method.getName();\n\t\t\tClass<?>[] parameterTypes = method.getParameterTypes();\n\t\t\tfor (Class<?> ifc : targetType.getInterfaces()) {\n\t\t\t\ttry {\n\t\t\t\t\treturn ifc.getMethod(methodName, parameterTypes);\n\t\t\t\t}\n\t\t\t\tcatch (NoSuchMethodException ex) {\n\t\t\t\t\t// Alright, not on this interface then...\n\t\t\t\t}\n\t\t\t}\n\t\t\t// A final desperate attempt on the proxy class itself...\n\t\t\treturn targetType.getMethod(methodName, parameterTypes);\n\t\t}\n\t\tcatch (NoSuchMethodException ex) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tmethod.getName(), method.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T inspect(Method method);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 143, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__MethodIntrospector__6731dbd5.java", "order": 11, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-bb3a6731dbd5-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1230, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9f7c88500724-I12", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n/**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n\t}\n\n\n\t/**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */\n\tpublic static <T> Map<Method, T> selectMethods(Class<?> targetType, final MetadataLookup<T> metadataLookup) {\n\t\tfinal Map<Method, T> methodMap = new LinkedHashMap<>();\n\t\tSet<Class<?>> handlerTypes = new LinkedHashSet<>();\n\t\tClass<?> specificHandlerType = null;\n\n\t\tif (!Proxy.isProxyClass(targetType)) {\n\t\t\tspecificHandlerType = ClassUtils.getUserClass(targetType);\n\t\t\thandlerTypes.add(specificHandlerType);\n\t\t}\n\t\thandlerTypes.addAll(ClassUtils.getAllInterfacesForClassAsSet(targetType));\n\n\t\tfor (Class<?> currentHandlerType : handlerTypes) {\n\t\t\t\n\n\t\t\tReflectionUtils.doWithMethods(currentHandlerType, method -> {\n\t\t\t\tMethod specificMethod = ClassUtils.getMostSpecificMethod(method, ((specificHandlerType != null ? specificHandlerType : currentHandlerType)));\n\t\t\t\tT result = metadataLookup.inspect(specificMethod);\n\t\t\t\tif (result != null) {\n\t\t\t\t\tMethod bridgedMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);\n\t\t\t\t\tif (bridgedMethod == specificMethod || bridgedMethod == method ||\n\t\t\t\t\t\t\tbridgedMethod.equals(specificMethod) || bridgedMethod.equals(method) ||\n\t\t\t\t\t\t\tmetadataLookup.inspect(bridgedMethod) == null) {\n\t\t\t\t\t\tmethodMap.put(specificMethod, result);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t}\n\n\t\treturn methodMap;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */\n\tpublic static Set<Method> selectMethods(Class<?> targetType, final ReflectionUtils.MethodFilter methodFilter) {\n\t\treturn selectMethods(targetType,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (methodFilter.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t/**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */\n\tpublic static Method selectInvocableMethod(Method method, Class<?> targetType) {\n\t\tif (method.getDeclaringClass().isAssignableFrom(targetType)) {\n\t\t\treturn method;\n\t\t}\n\t\ttry {\n\t\t\tString methodName = method.getName();\n\t\t\tClass<?>[] parameterTypes = method.getParameterTypes();\n\t\t\tfor (Class<?> ifc : targetType.getInterfaces()) {\n\t\t\t\ttry {\n\t\t\t\t\treturn ifc.getMethod(methodName, parameterTypes);\n\t\t\t\t}\n\t\t\t\tcatch (NoSuchMethodException ex) {\n\t\t\t\t\t// Alright, not on this interface then...\n\t\t\t\t}\n\t\t\t}\n\t\t\t// A final desperate attempt on the proxy class itself...\n\t\t\treturn targetType.getMethod(methodName, parameterTypes);\n\t\t}\n\t\tcatch (NoSuchMethodException ex) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tmethod.getName(), method.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T inspect(Method method);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "b85f14829aac72b767b0049734b354d25ae9cbc806b5d49da10a9cc6f116b8cb", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 143, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__MethodIntrospector__88500724.java", "order": 12, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-9f7c88500724-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1231, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9600db7f4f35-I13", "source": "package org.springframework.core;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.util.LinkedHashMap;\nimport java.util.LinkedHashSet;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\n\n/**\n * Defines the algorithm for searching for metadata-associated methods exhaustively\n * including interfaces and parent classes while also dealing with parameterized methods\n * as well as common scenarios encountered with interface and class-based proxies.\n *\n * <p>Typically, but not necessarily, used for finding annotated handler methods.\n *\n * @author Juergen Hoeller\n * @author Rossen Stoyanchev\n * @author Sam Brannen\n * @since 4.2.3\n */\npublic final class MethodIntrospector {\n\n\tprivate MethodIntrospector() {\n\t}\n\n\n\t/**\n\t * Select methods on the given target type based on the lookup of associated metadata.\n\t * <p>Callers define methods of interest through the {@link MetadataLookup} parameter,\n\t * allowing to collect the associated metadata into the result map.\n\t * @param targetType the target type to search methods on\n\t * @param metadataLookup a {@link MetadataLookup} callback to inspect methods of interest,\n\t * returning non-null metadata to be associated with a given method if there is a match,\n\t * or {@code null} for no match\n\t * @return the selected methods associated with their metadata (in the order of retrieval),\n\t * or an empty map in case of no match\n\t */\n\tpublic static <T> Map<Method, T> selectMethods(Class<?> targetType, final MetadataLookup<T> metadataLookup) {\n\t\tfinal Map<Method, T> methodMap = new LinkedHashMap<>();\n\t\tSet<Class<?>> handlerTypes = new LinkedHashSet<>();\n\t\tClass<?> specificHandlerType = null;\n\n\t\tif (!Proxy.isProxyClass(targetType)) {\n\t\t\tspecificHandlerType = ClassUtils.getUserClass(targetType);\n\t\t\thandlerTypes.add(specificHandlerType);\n\t\t}\n\t\thandlerTypes.addAll(ClassUtils.getAllInterfacesForClassAsSet(targetType));\n\n\t\t{\n\t\t  java.util.Iterator<?> loopIterator = (handlerTypes).iterator();\n\t\t  while (loopIterator.hasNext()) {\n\t\t    Class<?> currentHandlerType = (Class<?>) loopIterator.next();\n\t\t    final Class<?> targetClass = (specificHandlerType != null ? specificHandlerType : currentHandlerType);\n\n\t\t    ReflectionUtils.doWithMethods(currentHandlerType, method -> {\n\t\t    \tMethod specificMethod = ClassUtils.getMostSpecificMethod(method, targetClass);\n\t\t    \tT result = metadataLookup.inspect(specificMethod);\n\t\t    \tif (result != null) {\n\t\t    \t\tMethod bridgedMethod = BridgeMethodResolver.findBridgedMethod(specificMethod);\n\t\t    \t\tif (bridgedMethod == specificMethod || bridgedMethod == method ||\n\t\t    \t\t\t\tbridgedMethod.equals(specificMethod) || bridgedMethod.equals(method) ||\n\t\t    \t\t\t\tmetadataLookup.inspect(bridgedMethod) == null) {\n\t\t    \t\t\tmethodMap.put(specificMethod, result);\n\t\t    \t\t}\n\t\t    \t}\n\t\t    }, ReflectionUtils.USER_DECLARED_METHODS);\n\t\t  }\n\t\t}\n\n\t\treturn methodMap;\n\t}\n\n\t/**\n\t * Select methods on the given target type based on a filter.\n\t * <p>Callers define methods of interest through the {@code MethodFilter} parameter.\n\t * @param targetType the target type to search methods on\n\t * @param methodFilter a {@code MethodFilter} to help\n\t * recognize handler methods of interest\n\t * @return the selected methods, or an empty set in case of no match\n\t */\n\tpublic static Set<Method> selectMethods(Class<?> targetType, final ReflectionUtils.MethodFilter methodFilter) {\n\t\treturn selectMethods(targetType,\n\t\t\t\t(MetadataLookup<Boolean>) method -> (methodFilter.matches(method) ? Boolean.TRUE : null)).keySet();\n\t}\n\n\t/**\n\t * Select an invocable method on the target type: either the given method itself\n\t * if actually exposed on the target type, or otherwise a corresponding method\n\t * on one of the target type's interfaces or on the target type itself.\n\t * <p>Matches on user-declared interfaces will be preferred since they are likely\n\t * to contain relevant metadata that corresponds to the method on the target class.\n\t * @param method the method to check\n\t * @param targetType the target type to search methods on\n\t * (typically an interface-based JDK proxy)\n\t * @return a corresponding invocable method on the target type\n\t * @throws IllegalStateException if the given method is not invocable on the given\n\t * target type (typically due to a proxy mismatch)\n\t */\n\tpublic static Method selectInvocableMethod(Method method, Class<?> targetType) {\n\t\tif (method.getDeclaringClass().isAssignableFrom(targetType)) {\n\t\t\treturn method;\n\t\t}\n\t\ttry {\n\t\t\tString methodName = method.getName();\n\t\t\tClass<?>[] parameterTypes = method.getParameterTypes();\n\t\t\t{\n\t\t\t  Class<?>[] loopArray = targetType.getInterfaces();\n\t\t\t  int loopIndex = 0;\n\t\t\t  while (loopIndex < loopArray.length) {\n\t\t\t    Class<?> ifc = loopArray[loopIndex++];\n\t\t\t    try {\n\t\t\t    \treturn ifc.getMethod(methodName, parameterTypes);\n\t\t\t    }\n\t\t\t    catch (NoSuchMethodException ex) {\n\t\t\t    \t// Alright, not on this interface then...\n\t\t\t    }\n\t\t\t  }\n\t\t\t}\n\t\t\t// A final desperate attempt on the proxy class itself...\n\t\t\treturn targetType.getMethod(methodName, parameterTypes);\n\t\t}\n\t\tcatch (NoSuchMethodException ex) {\n\t\t\tthrow new IllegalStateException(String.format(\n\t\t\t\t\t\"Need to invoke method '%s' declared on target class '%s', \" +\n\t\t\t\t\t\"but not found in any interface(s) of the exposed proxy type. \" +\n\t\t\t\t\t\"Either pull the method up to an interface or switch to CGLIB \" +\n\t\t\t\t\t\"proxies by enforcing proxy-target-class mode in your configuration.\",\n\t\t\t\t\tmethod.getName(), method.getDeclaringClass().getSimpleName()));\n\t\t}\n\t}\n\n\n\t/**\n\t * A callback interface for metadata lookup on a given method.\n\t * @param <T> the type of metadata returned\n\t */\n\t@FunctionalInterface\n\tpublic interface MetadataLookup<T> {\n\n\t\t/**\n\t\t * Perform a lookup on the given method and return associated metadata, if any.\n\t\t * @param method the method to inspect\n\t\t * @return non-null metadata to be associated with a method if there is a match,\n\t\t * or {@code null} for no match\n\t\t */\n\t\t@Nullable T inspect(Method method);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__MethodIntrospector__39c53da0.java", "base_sample_id": "source-a8ea4c30b7d0eb70", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "7fae2fd6014cda75eed6404bc346bea129283e0502813dc6156224911f42df64", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/MethodIntrospector.java", "interference": "lower-for-to-while", "level": 13, "line_count": 152, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__MethodIntrospector__db7f4f35.java", "order": 13, "original_content_sha256": "dac0e4848155f5b5e44ecf1394fa52654edb858bf91437af4849c375825510ab", "parent_variant_id": "int-7e1a39c53da0-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/MethodIntrospector.java#L31-L162", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 1, "enhanced_for_loops_eligible": 2, "enhanced_for_loops_found": 2, "enhanced_for_loops_lowered_to_while": 2, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 1, "for_loops_lowered_to_while": 2, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "MethodIntrospector", "variant_id": "int-9600db7f4f35-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1232, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ac8cbec81cad-SRC", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService conversionService) {\n\t\tthis.conversionService = conversionService;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> getConvertibleTypes() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn canConvertKey(sourceType, targetType) && canConvertValue(sourceType, targetType);\n\t}\n\n\t@Override\n\tpublic @Nullable Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\tif (source == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> sourceMap = (Map<Object, Object>) source;\n\n\t\t// Shortcut if possible...\n\t\tboolean copyRequired = !targetType.getType().isInstance(source);\n\t\tif (!copyRequired && sourceMap.isEmpty()) {\n\t\t\treturn sourceMap;\n\t\t}\n\t\tTypeDescriptor keyDesc = targetType.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor valueDesc = targetType.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> targetEntries = new ArrayList<>(sourceMap.size());\n\t\tfor (Map.Entry<Object, Object> entry : sourceMap.entrySet()) {\n\t\t\tObject sourceKey = entry.getKey();\n\t\t\tObject sourceValue = entry.getValue();\n\t\t\tObject targetKey = convertKey(sourceKey, sourceType, keyDesc);\n\t\t\tObject targetValue = convertValue(sourceValue, sourceType, valueDesc);\n\t\t\ttargetEntries.add(new MapEntry(targetKey, targetValue));\n\t\t\tif (sourceKey != targetKey || sourceValue != targetValue) {\n\t\t\t\tcopyRequired = true;\n\t\t\t}\n\t\t}\n\t\tif (!copyRequired) {\n\t\t\treturn sourceMap;\n\t\t}\n\n\t\tMap<Object, Object> targetMap = CollectionFactory.createMap(targetType.getType(),\n\t\t\t\t(keyDesc != null ? keyDesc.getType() : null), sourceMap.size());\n\n\t\tfor (MapEntry entry : targetEntries) {\n\t\t\tentry.addToMap(targetMap);\n\t\t}\n\t\treturn targetMap;\n\t}\n\n\n\t// internal helpers\n\n\tprivate boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(),\n\t\t\t\ttargetType.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(),\n\t\t\t\ttargetType.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object convertKey(Object sourceKey, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceKey;\n\t\t}\n\t\treturn this.conversionService.convert(sourceKey, sourceType.getMapKeyTypeDescriptor(sourceKey), targetType);\n\t}\n\n\tprivate @Nullable Object convertValue(Object sourceValue, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceValue;\n\t\t}\n\t\treturn this.conversionService.convert(sourceValue, sourceType.getMapValueTypeDescriptor(sourceValue), targetType);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object key, @Nullable Object value) {\n\t\t\tthis.key = key;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tpublic void addToMap(Map<Object, Object> map) {\n\t\t\tmap.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": null, "level": 0, "line_count": 129, "local_path": "source-original/SRC__spring-framework__MapToMapConverter__bec81cad.java", "order": 0, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-ac8cbec81cad-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1191, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-38b18616f8a6-I01", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n\n\n\n\n\n\n\n\n\n\n\n\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService conversionService) {\n\t\tthis.conversionService = conversionService;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> getConvertibleTypes() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn canConvertKey(sourceType, targetType) && canConvertValue(sourceType, targetType);\n\t}\n\n\t@Override\n\tpublic @Nullable Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\tif (source == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> sourceMap = (Map<Object, Object>) source;\n\n\t\t \n\t\tboolean copyRequired = !targetType.getType().isInstance(source);\n\t\tif (!copyRequired && sourceMap.isEmpty()) {\n\t\t\treturn sourceMap;\n\t\t}\n\t\tTypeDescriptor keyDesc = targetType.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor valueDesc = targetType.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> targetEntries = new ArrayList<>(sourceMap.size());\n\t\tfor (Map.Entry<Object, Object> entry : sourceMap.entrySet()) {\n\t\t\tObject sourceKey = entry.getKey();\n\t\t\tObject sourceValue = entry.getValue();\n\t\t\tObject targetKey = convertKey(sourceKey, sourceType, keyDesc);\n\t\t\tObject targetValue = convertValue(sourceValue, sourceType, valueDesc);\n\t\t\ttargetEntries.add(new MapEntry(targetKey, targetValue));\n\t\t\tif (sourceKey != targetKey || sourceValue != targetValue) {\n\t\t\t\tcopyRequired = true;\n\t\t\t}\n\t\t}\n\t\tif (!copyRequired) {\n\t\t\treturn sourceMap;\n\t\t}\n\n\t\tMap<Object, Object> targetMap = CollectionFactory.createMap(targetType.getType(),\n\t\t\t\t(keyDesc != null ? keyDesc.getType() : null), sourceMap.size());\n\n\t\tfor (MapEntry entry : targetEntries) {\n\t\t\tentry.addToMap(targetMap);\n\t\t}\n\t\treturn targetMap;\n\t}\n\n\n\t \n\n\tprivate boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(),\n\t\t\t\ttargetType.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(),\n\t\t\t\ttargetType.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object convertKey(Object sourceKey, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceKey;\n\t\t}\n\t\treturn this.conversionService.convert(sourceKey, sourceType.getMapKeyTypeDescriptor(sourceKey), targetType);\n\t}\n\n\tprivate @Nullable Object convertValue(Object sourceValue, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceValue;\n\t\t}\n\t\treturn this.conversionService.convert(sourceValue, sourceType.getMapValueTypeDescriptor(sourceValue), targetType);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object key, @Nullable Object value) {\n\t\t\tthis.key = key;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tpublic void addToMap(Map<Object, Object> map) {\n\t\t\tmap.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "ad4fafbbdccee9227ee4d3306ffe609bff3204affcd2c0782c941474bb82b1d7", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "remove-comments", "level": 1, "line_count": 129, "local_path": "comments/remove-comments/I01__spring-framework__MapToMapConverter__8616f8a6.java", "order": 1, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 453, "comments_removed": 3}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-38b18616f8a6-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1192, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-da34fea777ae-I02", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService conversion) {\n\t\tthis.conversionService = conversion;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> get() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean mat(TypeDescriptor source2, TypeDescriptor target) {\n\t\treturn can(source2, target) && can2(source2, target);\n\t}\n\n\t@Override\n\tpublic @Nullable Object con(@Nullable Object sou, TypeDescriptor source, TypeDescriptor target2) {\n\t\tif (sou == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> source3 = (Map<Object, Object>) sou;\n\n\t\t// Shortcut if possible...\n\t\tboolean copy = !target2.getType().isInstance(sou);\n\t\tif (!copy && source3.isEmpty()) {\n\t\t\treturn source3;\n\t\t}\n\t\tTypeDescriptor key2 = target2.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor value2 = target2.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> target3 = new ArrayList<>(source3.size());\n\t\tfor (Map.Entry<Object, Object> ent : source3.entrySet()) {\n\t\t\tObject source4 = ent.getKey();\n\t\t\tObject source5 = ent.getValue();\n\t\t\tObject target4 = convert(source4, source, key2);\n\t\t\tObject target5 = convert2(source5, source, value2);\n\t\t\ttarget3.add(new MapEntry(target4, target5));\n\t\t\tif (source4 != target4 || source5 != target5) {\n\t\t\t\tcopy = true;\n\t\t\t}\n\t\t}\n\t\tif (!copy) {\n\t\t\treturn source3;\n\t\t}\n\n\t\tMap<Object, Object> target6 = CollectionFactory.createMap(target2.getType(),\n\t\t\t\t(key2 != null ? key2.getType() : null), source3.size());\n\n\t\tfor (MapEntry ent2 : target3) {\n\t\t\tent2.addToMap(target6);\n\t\t}\n\t\treturn target6;\n\t}\n\n\n\t// internal helpers\n\n\tprivate boolean can(TypeDescriptor source6, TypeDescriptor target7) {\n\t\treturn ConversionUtils.canConvertElements(source6.getMapKeyTypeDescriptor(),\n\t\t\t\ttarget7.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean can2(TypeDescriptor source7, TypeDescriptor target8) {\n\t\treturn ConversionUtils.canConvertElements(source7.getMapValueTypeDescriptor(),\n\t\t\t\ttarget8.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object convert(Object source8, TypeDescriptor source9, @Nullable TypeDescriptor target9) {\n\t\tif (target9 == null) {\n\t\t\treturn source8;\n\t\t}\n\t\treturn this.conversionService.convert(source8, source9.getMapKeyTypeDescriptor(source8), target9);\n\t}\n\n\tprivate @Nullable Object convert2(Object source10, TypeDescriptor source11, @Nullable TypeDescriptor target10) {\n\t\tif (target10 == null) {\n\t\t\treturn source10;\n\t\t}\n\t\treturn this.conversionService.convert(source10, source11.getMapValueTypeDescriptor(source10), target10);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object key, @Nullable Object val) {\n\t\t\tthis.key = key;\n\t\t\tthis.value = val;\n\t\t}\n\n\t\tpublic void add(Map<Object, Object> map) {\n\t\t\tmap.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "462f3614b9ac58f505cc87a35f1decc021409da6e6e5c302d9a5d0c1dbb5aa01", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "shorten-identifiers", "level": 2, "line_count": 129, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__MapToMapConverter__fea777ae.java", "order": 2, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 61, "identifiers_declared": 31, "local_name_collisions_avoided": 22, "method_calls_renamed": 4, "method_declarations_renamed": 8, "method_name_collisions_avoided": 2, "method_name_groups": 8}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-da34fea777ae-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1193, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ef306e014695-I03", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService currentRequest) {\n\t\tthis.conversionService = currentRequest;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> validateRequest() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean contain(TypeDescriptor finalToken, TypeDescriptor sharedNode) {\n\t\treturn createAccount(finalToken, sharedNode) && validateAccount(finalToken, sharedNode);\n\t}\n\n\t@Override\n\tpublic @Nullable Object collect(@Nullable Object buffer, TypeDescriptor sharedItem, TypeDescriptor backupPath) {\n\t\tif (buffer == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> sharedKey = (Map<Object, Object>) buffer;\n\n\t\t// Shortcut if possible...\n\t\tboolean primaryState = !backupPath.getType().isInstance(buffer);\n\t\tif (!primaryState && sharedKey.isEmpty()) {\n\t\t\treturn sharedKey;\n\t\t}\n\t\tTypeDescriptor balance = backupPath.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor secureKey = backupPath.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> cachedAccount = new ArrayList<>(sharedKey.size());\n\t\tfor (Map.Entry<Object, Object> price : sharedKey.entrySet()) {\n\t\t\tObject reference = price.getKey();\n\t\t\tObject cachedEvent = price.getValue();\n\t\t\tObject finalPath = findWindow(reference, sharedItem, balance);\n\t\t\tObject recentBatch = removeRecord(cachedEvent, sharedItem, secureKey);\n\t\t\tcachedAccount.add(new MapEntry(finalPath, recentBatch));\n\t\t\tif (reference != finalPath || cachedEvent != recentBatch) {\n\t\t\t\tprimaryState = true;\n\t\t\t}\n\t\t}\n\t\tif (!primaryState) {\n\t\t\treturn sharedKey;\n\t\t}\n\n\t\tMap<Object, Object> backupKey = CollectionFactory.createMap(backupPath.getType(),\n\t\t\t\t(balance != null ? balance.getType() : null), sharedKey.size());\n\n\t\tfor (MapEntry limit : cachedAccount) {\n\t\t\tlimit.addToMap(backupKey);\n\t\t}\n\t\treturn backupKey;\n\t}\n\n\n\t// internal helpers\n\n\tprivate boolean createAccount(TypeDescriptor localValue, TypeDescriptor activeMode) {\n\t\treturn ConversionUtils.canConvertElements(localValue.getMapKeyTypeDescriptor(),\n\t\t\t\tactiveMode.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean validateAccount(TypeDescriptor sharedData, TypeDescriptor finalScore) {\n\t\treturn ConversionUtils.canConvertElements(sharedData.getMapValueTypeDescriptor(),\n\t\t\t\tfinalScore.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object findWindow(Object localUser, TypeDescriptor nextResult, @Nullable TypeDescriptor secureItem) {\n\t\tif (secureItem == null) {\n\t\t\treturn localUser;\n\t\t}\n\t\treturn this.conversionService.convert(localUser, nextResult.getMapKeyTypeDescriptor(localUser), secureItem);\n\t}\n\n\tprivate @Nullable Object removeRecord(Object defaultMode, TypeDescriptor backupNode, @Nullable TypeDescriptor permission) {\n\t\tif (permission == null) {\n\t\t\treturn defaultMode;\n\t\t}\n\t\treturn this.conversionService.convert(defaultMode, backupNode.getMapValueTypeDescriptor(defaultMode), permission);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object age, @Nullable Object state) {\n\t\t\tthis.key = age;\n\t\t\tthis.value = state;\n\t\t}\n\n\t\tpublic void readNode(Map<Object, Object> key) {\n\t\t\tkey.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "80630a51b57117c651f31e2417752024a6f28ac5b2476c80688396386eff4151", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "mislead-identifiers", "level": 3, "line_count": 129, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__MapToMapConverter__6e014695.java", "order": 3, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 61, "identifiers_declared": 31, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 30, "local_random_pool_selections": 31, "local_total_length_difference": 3, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 4, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 8, "method_exact_length_matches": 7, "method_name_groups": 8, "method_random_pool_selections": 8, "method_total_length_difference": 4}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-ef306e014695-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1194, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-950d30598466-I04", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService a) {\n\t\tthis.conversionService = a;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> a() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean b(TypeDescriptor b, TypeDescriptor c) {\n\t\treturn d(b, c) && e(b, c);\n\t}\n\n\t@Override\n\tpublic @Nullable Object c(@Nullable Object d, TypeDescriptor e, TypeDescriptor f) {\n\t\tif (d == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> g = (Map<Object, Object>) d;\n\n\t\t// Shortcut if possible...\n\t\tboolean h = !f.getType().isInstance(d);\n\t\tif (!h && g.isEmpty()) {\n\t\t\treturn g;\n\t\t}\n\t\tTypeDescriptor i = f.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor j = f.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> k = new ArrayList<>(g.size());\n\t\tfor (Map.Entry<Object, Object> l : g.entrySet()) {\n\t\t\tObject m = l.getKey();\n\t\t\tObject n = l.getValue();\n\t\t\tObject o = f(m, e, i);\n\t\t\tObject p = g(n, e, j);\n\t\t\tk.add(new MapEntry(o, p));\n\t\t\tif (m != o || n != p) {\n\t\t\t\th = true;\n\t\t\t}\n\t\t}\n\t\tif (!h) {\n\t\t\treturn g;\n\t\t}\n\n\t\tMap<Object, Object> q = CollectionFactory.createMap(f.getType(),\n\t\t\t\t(i != null ? i.getType() : null), g.size());\n\n\t\tfor (MapEntry r : k) {\n\t\t\tr.addToMap(q);\n\t\t}\n\t\treturn q;\n\t}\n\n\n\t// internal helpers\n\n\tprivate boolean d(TypeDescriptor s, TypeDescriptor t) {\n\t\treturn ConversionUtils.canConvertElements(s.getMapKeyTypeDescriptor(),\n\t\t\t\tt.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean e(TypeDescriptor u, TypeDescriptor v) {\n\t\treturn ConversionUtils.canConvertElements(u.getMapValueTypeDescriptor(),\n\t\t\t\tv.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object f(Object w, TypeDescriptor x, @Nullable TypeDescriptor y) {\n\t\tif (y == null) {\n\t\t\treturn w;\n\t\t}\n\t\treturn this.conversionService.convert(w, x.getMapKeyTypeDescriptor(w), y);\n\t}\n\n\tprivate @Nullable Object g(Object z, TypeDescriptor A, @Nullable TypeDescriptor B) {\n\t\tif (B == null) {\n\t\t\treturn z;\n\t\t}\n\t\treturn this.conversionService.convert(z, A.getMapValueTypeDescriptor(z), B);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object C, @Nullable Object D) {\n\t\t\tthis.key = C;\n\t\t\tthis.value = D;\n\t\t}\n\n\t\tpublic void a(Map<Object, Object> E) {\n\t\t\tE.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "4e8fbb61a5c9bbee33771c71aa1fd9628d70e599ba82c104d5b3713d0af62d92", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "garble-identifiers", "level": 4, "line_count": 129, "local_path": "identifiers/garble-identifiers/I04__spring-framework__MapToMapConverter__30598466.java", "order": 4, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 61, "identifiers_declared": 31, "local_name_collisions_avoided": 0, "method_calls_renamed": 4, "method_declarations_renamed": 8, "method_name_collisions_avoided": 0, "method_name_groups": 8}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-950d30598466-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1195, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f7573371dfd1-I05", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService conversionService) {\n\t\tthis.conversionService = conversionService;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> getConvertibleTypes() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn canConvertKey(sourceType, targetType) && canConvertValue(sourceType, targetType);\n\t}\n\n\t@Override\n\tpublic @Nullable Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\tif (source == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> sourceMap = (Map<Object, Object>) source;\n\n\t\t// Shortcut if possible...\n\t\tboolean copyRequired = !targetType.getType().isInstance(source);\n\t\tif (!copyRequired && sourceMap.isEmpty()) {\n\t\t\treturn sourceMap;\n\t\t}\n\t\tTypeDescriptor keyDesc = targetType.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor valueDesc = targetType.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> targetEntries = new ArrayList<>(sourceMap.size());\n\t\tfor (Map.Entry<Object, Object> entry : sourceMap.entrySet()) {\n\t\t\tObject sourceKey = entry.getKey();\n\t\t\tObject sourceValue = entry.getValue();\n\t\t\tObject targetKey = convertKey(sourceKey, sourceType, keyDesc);\n\t\t\tObject targetValue = convertValue(sourceValue, sourceType, valueDesc);\n\t\t\ttargetEntries.add(new MapEntry(targetKey, targetValue));\n\t\t\tif (sourceKey != targetKey || sourceValue != targetValue) {\n\t\t\t\tcopyRequired = true;\n\t\t\t}\n\t\t}\n\t\tif (!copyRequired) {\n\t\t\treturn sourceMap;\n\t\t}\n\n\t\tMap<Object, Object> targetMap = CollectionFactory.createMap(targetType.getType(),\n\t\t\t\t(keyDesc != null ? keyDesc.getType() : null), sourceMap.size());\n\n\t\tfor (MapEntry entry : targetEntries) {\n\t\t\tentry.addToMap(targetMap);\n\t\t}\n\t\treturn targetMap;\n\t}\n\n\n\t// internal helpers\n\n\tprivate boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(),\n\t\t\t\ttargetType.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(),\n\t\t\t\ttargetType.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object convertKey(Object sourceKey, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceKey;\n\t\t}\n\t\treturn this.conversionService.convert(sourceKey, sourceType.getMapKeyTypeDescriptor(sourceKey), targetType);\n\t}\n\n\tprivate @Nullable Object convertValue(Object sourceValue, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceValue;\n\t\t}\n\t\treturn this.conversionService.convert(sourceValue, sourceType.getMapValueTypeDescriptor(sourceValue), targetType);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object key, @Nullable Object value) {\n\t\t\tthis.key = key;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tpublic void addToMap(Map<Object, Object> map) {\n\t\t\tmap.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "encode-integer-literals", "level": 5, "line_count": 129, "local_path": "expressions/encode-integer-literals/I05__spring-framework__MapToMapConverter__3371dfd1.java", "order": 5, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-f7573371dfd1-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1196, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a8d7f48b893e-I06", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService conversionService) {\n\t\tthis.conversionService = conversionService;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> getConvertibleTypes() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn canConvertKey(sourceType, targetType) && canConvertValue(sourceType, targetType);\n\t}\n\n\t@Override\n\tpublic @Nullable Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\tif (!((source == null))) {} else {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> sourceMap = (Map<Object, Object>) source;\n\n\t\t// Shortcut if possible...\n\t\tboolean copyRequired = !targetType.getType().isInstance(source);\n\t\tif (!((!copyRequired && sourceMap.isEmpty()))) {} else {\n\t\t\treturn sourceMap;\n\t\t}\n\t\tTypeDescriptor keyDesc = targetType.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor valueDesc = targetType.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> targetEntries = new ArrayList<>(sourceMap.size());\n\t\tfor (Map.Entry<Object, Object> entry : sourceMap.entrySet()) {\n\t\t\tObject sourceKey = entry.getKey();\n\t\t\tObject sourceValue = entry.getValue();\n\t\t\tObject targetKey = convertKey(sourceKey, sourceType, keyDesc);\n\t\t\tObject targetValue = convertValue(sourceValue, sourceType, valueDesc);\n\t\t\ttargetEntries.add(new MapEntry(targetKey, targetValue));\n\t\t\tif (!((sourceKey != targetKey || sourceValue != targetValue))) {} else {\n\t\t\t\tcopyRequired = true;\n\t\t\t}\n\t\t}\n\t\tif (!((!copyRequired))) {} else {\n\t\t\treturn sourceMap;\n\t\t}\n\n\t\tMap<Object, Object> targetMap = CollectionFactory.createMap(targetType.getType(),\n\t\t\t\t(keyDesc != null ? keyDesc.getType() : null), sourceMap.size());\n\n\t\tfor (MapEntry entry : targetEntries) {\n\t\t\tentry.addToMap(targetMap);\n\t\t}\n\t\treturn targetMap;\n\t}\n\n\n\t// internal helpers\n\n\tprivate boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(),\n\t\t\t\ttargetType.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(),\n\t\t\t\ttargetType.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object convertKey(Object sourceKey, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (!((targetType == null))) {} else {\n\t\t\treturn sourceKey;\n\t\t}\n\t\treturn this.conversionService.convert(sourceKey, sourceType.getMapKeyTypeDescriptor(sourceKey), targetType);\n\t}\n\n\tprivate @Nullable Object convertValue(Object sourceValue, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (!((targetType == null))) {} else {\n\t\t\treturn sourceValue;\n\t\t}\n\t\treturn this.conversionService.convert(sourceValue, sourceType.getMapValueTypeDescriptor(sourceValue), targetType);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object key, @Nullable Object value) {\n\t\t\tthis.key = key;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tpublic void addToMap(Map<Object, Object> map) {\n\t\t\tmap.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "10597b33b42cd03fbff1c69e23641b3333c1b7b5624cf563be2007fc95f54cdf", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "invert-conditions", "level": 6, "line_count": 129, "local_path": "expressions/invert-conditions/I06__spring-framework__MapToMapConverter__f48b893e.java", "order": 6, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 6}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-a8d7f48b893e-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1197, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-154ff9276d34-I07", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService conversionService) {\nif (((0x5951 ^ 0x5951) != 0)) { throw new AssertionError(); }\n\n\t\tthis.conversionService = conversionService;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> getConvertibleTypes() {\nif (((0x82D ^ 0x82D) != 0)) { throw new AssertionError(); }\n\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {\nif (((0x9BFD ^ 0x9BFD) != 0)) { throw new AssertionError(); }\n\n\t\treturn canConvertKey(sourceType, targetType) && canConvertValue(sourceType, targetType);\n\t}\n\n\t@Override\n\tpublic @Nullable Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {\nif (((0xAEFD ^ 0xAEFD) != 0)) { throw new AssertionError(); }\n\n\t\tif (source == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> sourceMap = (Map<Object, Object>) source;\n\n\t\t// Shortcut if possible...\n\t\tboolean copyRequired = !targetType.getType().isInstance(source);\n\t\tif (!copyRequired && sourceMap.isEmpty()) {\n\t\t\treturn sourceMap;\n\t\t}\n\t\tTypeDescriptor keyDesc = targetType.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor valueDesc = targetType.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> targetEntries = new ArrayList<>(sourceMap.size());\n\t\tfor (Map.Entry<Object, Object> entry : sourceMap.entrySet()) {\n\t\t\tObject sourceKey = entry.getKey();\n\t\t\tObject sourceValue = entry.getValue();\n\t\t\tObject targetKey = convertKey(sourceKey, sourceType, keyDesc);\n\t\t\tObject targetValue = convertValue(sourceValue, sourceType, valueDesc);\n\t\t\ttargetEntries.add(new MapEntry(targetKey, targetValue));\n\t\t\tif (sourceKey != targetKey || sourceValue != targetValue) {\n\t\t\t\tcopyRequired = true;\n\t\t\t}\n\t\t}\n\t\tif (!copyRequired) {\n\t\t\treturn sourceMap;\n\t\t}\n\n\t\tMap<Object, Object> targetMap = CollectionFactory.createMap(targetType.getType(),\n\t\t\t\t(keyDesc != null ? keyDesc.getType() : null), sourceMap.size());\n\n\t\tfor (MapEntry entry : targetEntries) {\n\t\t\tentry.addToMap(targetMap);\n\t\t}\n\t\treturn targetMap;\n\t}\n\n\n\t// internal helpers\n\n\tprivate boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) {\nif (((0x12CA ^ 0x12CA) != 0)) { throw new AssertionError(); }\n\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(),\n\t\t\t\ttargetType.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) {\nif (((0x3B0A ^ 0x3B0A) != 0)) { throw new AssertionError(); }\n\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(),\n\t\t\t\ttargetType.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object convertKey(Object sourceKey, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\nif (((0x1DC6 ^ 0x1DC6) != 0)) { throw new AssertionError(); }\n\n\t\tif (targetType == null) {\n\t\t\treturn sourceKey;\n\t\t}\n\t\treturn this.conversionService.convert(sourceKey, sourceType.getMapKeyTypeDescriptor(sourceKey), targetType);\n\t}\n\n\tprivate @Nullable Object convertValue(Object sourceValue, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\nif (((0x1AB7 ^ 0x1AB7) != 0)) { throw new AssertionError(); }\n\n\t\tif (targetType == null) {\n\t\t\treturn sourceValue;\n\t\t}\n\t\treturn this.conversionService.convert(sourceValue, sourceType.getMapValueTypeDescriptor(sourceValue), targetType);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object key, @Nullable Object value) {\nif (((0x7795 ^ 0x7795) != 0)) { throw new AssertionError(); }\n\n\t\t\tthis.key = key;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tpublic void addToMap(Map<Object, Object> map) {\nif (((0x1527 ^ 0x1527) != 0)) { throw new AssertionError(); }\n\n\t\t\tmap.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "cbda608e96f1b4b05c7f69166cf32f30960da3a458882e797f727f845e30c920", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "insert-dead-branches", "level": 7, "line_count": 149, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__MapToMapConverter__f9276d34.java", "order": 7, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 10}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-154ff9276d34-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1198, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1e4c51492246-I08", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService conversionService) {\n\t\tthis.conversionService = conversionService;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> getConvertibleTypes() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {\n{\n  int runningTotal = 0;\n  for (int currentNumber = 1; currentNumber <= 5; currentNumber++) {\n    runningTotal += currentNumber;\n  }\n}\n\n\t\treturn canConvertKey(sourceType, targetType) && canConvertValue(sourceType, targetType);\n\t}\n\n\t@Override\n\tpublic @Nullable Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\tif (source == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> sourceMap = (Map<Object, Object>) source;\n\n\t\t// Shortcut if possible...\n\t\tboolean copyRequired = !targetType.getType().isInstance(source);\n\t\tif (!copyRequired && sourceMap.isEmpty()) {\n\t\t\treturn sourceMap;\n\t\t}\n\t\tTypeDescriptor keyDesc = targetType.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor valueDesc = targetType.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> targetEntries = new ArrayList<>(sourceMap.size());\n\t\tfor (Map.Entry<Object, Object> entry : sourceMap.entrySet()) {\n\t\t\tObject sourceKey = entry.getKey();\n\t\t\tObject sourceValue = entry.getValue();\n\t\t\tObject targetKey = convertKey(sourceKey, sourceType, keyDesc);\n\t\t\tObject targetValue = convertValue(sourceValue, sourceType, valueDesc);\n\t\t\ttargetEntries.add(new MapEntry(targetKey, targetValue));\n\t\t\tif (sourceKey != targetKey || sourceValue != targetValue) {\n\t\t\t\tcopyRequired = true;\n\t\t\t}\n\t\t}\n\t\tif (!copyRequired) {\n\t\t\treturn sourceMap;\n\t\t}\n\n\t\tMap<Object, Object> targetMap = CollectionFactory.createMap(targetType.getType(),\n\t\t\t\t(keyDesc != null ? keyDesc.getType() : null), sourceMap.size());\n\n\t\tfor (MapEntry entry : targetEntries) {\n\t\t\tentry.addToMap(targetMap);\n\t\t}\n\t\treturn targetMap;\n\t}\n\n\n\t// internal helpers\n\n\tprivate boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(),\n\t\t\t\ttargetType.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(),\n\t\t\t\ttargetType.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object convertKey(Object sourceKey, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceKey;\n\t\t}\n\t\treturn this.conversionService.convert(sourceKey, sourceType.getMapKeyTypeDescriptor(sourceKey), targetType);\n\t}\n\n\tprivate @Nullable Object convertValue(Object sourceValue, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceValue;\n\t\t}\n\t\treturn this.conversionService.convert(sourceValue, sourceType.getMapValueTypeDescriptor(sourceValue), targetType);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object key, @Nullable Object value) {\n\t\t\tthis.key = key;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tpublic void addToMap(Map<Object, Object> map) {\n\t\t\tmap.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "968e4bf619e55fac742f938aece0e0b3976015eb5f312cd94d46b4eba8ea5700", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 136, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__MapToMapConverter__51492246.java", "order": 8, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 0}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-1e4c51492246-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1199, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d25488a05035-I09", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService conversionService) {\n\t\tthis.conversionService = conversionService;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> getConvertibleTypes() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn canConvertKey(sourceType, targetType) && canConvertValue(sourceType, targetType);\n\t}\n\n\t@Override\n\tpublic @Nullable Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\tif (source == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> sourceMap = (Map<Object, Object>) source;\n\n\t\t// Shortcut if possible...\n\t\tboolean copyRequired = !targetType.getType().isInstance(source);\n\t\tif (!copyRequired && sourceMap.isEmpty()) {\n\t\t\treturn sourceMap;\n\t\t}\n\t\tTypeDescriptor keyDesc = targetType.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor valueDesc = targetType.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> targetEntries = new ArrayList<>(sourceMap.size());\n\t\tfor (Map.Entry<Object, Object> entry : sourceMap.entrySet()) {\n\t\t\tObject sourceKey = entry.getKey();\n\t\t\tObject sourceValue = entry.getValue();\n\t\t\tObject targetKey = convertKey(sourceKey, sourceType, keyDesc);\n\t\t\tObject targetValue = convertValue(sourceValue, sourceType, valueDesc);\n\t\t\ttargetEntries.add(new MapEntry(targetKey, targetValue));\n\t\t\tif (sourceKey != targetKey || sourceValue != targetValue) {\n\t\t\t\tcopyRequired = true;\n\t\t\t}\n\t\t}\n\t\tif (!copyRequired) {\n\t\t\treturn sourceMap;\n\t\t}\n\n\t\tMap<Object, Object> targetMap = CollectionFactory.createMap(targetType.getType(),\n\t\t\t\t(keyDesc != null ? keyDesc.getType() : null), sourceMap.size());\n\n\t\tfor (MapEntry entry : targetEntries) {\n\t\t\tentry.addToMap(targetMap);\n\t\t}\n\t\treturn targetMap;\n\t}\n\n\n\t// internal helpers\n\n\tprivate boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(),\n\t\t\t\ttargetType.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(),\n\t\t\t\ttargetType.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object convertKey(Object sourceKey, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n{int lI0O_f59e4278=0xAA9A;boolean lI0O_15d9bbd0=true;do{lI0O_f59e4278^=0xAA9A;lI0O_15d9bbd0=false;}while(lI0O_15d9bbd0);}\n\n\t\tif (targetType == null) {\n\t\t\treturn sourceKey;\n\t\t}\n\t\treturn this.conversionService.convert(sourceKey, sourceType.getMapKeyTypeDescriptor(sourceKey), targetType);\n\t}\n\n\tprivate @Nullable Object convertValue(Object sourceValue, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceValue;\n\t\t}\n\t\treturn this.conversionService.convert(sourceValue, sourceType.getMapValueTypeDescriptor(sourceValue), targetType);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object key, @Nullable Object value) {\n\t\t\tthis.key = key;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tpublic void addToMap(Map<Object, Object> map) {\n\t\t\tmap.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5bd184b11b612238b0fd01bf2014019cfcaa9f4bc252a61b52b52043ced2c1ea", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 131, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__MapToMapConverter__88a05035.java", "order": 9, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 7}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-d25488a05035-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1200, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d79a0daf5581-I10", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections; import java.util.List;\nimport java.util.Map; import java.util.Set;\nimport org.jspecify.annotations.Nullable; import org.springframework.core.CollectionFactory; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.TypeDescriptor; import org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService conversionService) { this.conversionService = conversionService; } @Override public Set<ConvertiblePair> getConvertibleTypes() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t} @Override public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn canConvertKey(sourceType, targetType) && canConvertValue(sourceType, targetType);\n\t}\n\n\t@Override\n\tpublic @Nullable Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { if (source == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\") Map<Object, Object> sourceMap = (Map<Object, Object>) source;\n\n\t\t// Shortcut if possible...\n\t\tboolean copyRequired = !targetType.getType().isInstance(source);\n\t\tif (!copyRequired && sourceMap.isEmpty()) {\n\t\t\treturn sourceMap;\n\t\t}\n\t\tTypeDescriptor keyDesc = targetType.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor valueDesc = targetType.getMapValueTypeDescriptor(); List<MapEntry> targetEntries = new ArrayList<>(sourceMap.size());\n\t\tfor (Map.Entry<Object, Object> entry : sourceMap.entrySet()) {\n\t\t\tObject sourceKey = entry.getKey(); Object sourceValue = entry.getValue(); Object targetKey = convertKey(sourceKey, sourceType, keyDesc);\n\t\t\tObject targetValue = convertValue(sourceValue, sourceType, valueDesc);\n\t\t\ttargetEntries.add(new MapEntry(targetKey, targetValue));\n\t\t\tif (sourceKey != targetKey || sourceValue != targetValue) { copyRequired = true;\n\t\t\t} }\n\t\tif (!copyRequired) { return sourceMap;\n\t\t}\n\n\t\tMap<Object, Object> targetMap = CollectionFactory.createMap(targetType.getType(), (keyDesc != null ? keyDesc.getType() : null), sourceMap.size());\n\n\t\tfor (MapEntry entry : targetEntries) {\n\t\t\tentry.addToMap(targetMap); } return targetMap; } // internal helpers\n\n\tprivate boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) { return ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(),\n\t\t\t\ttargetType.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(),\n\t\t\t\ttargetType.getMapValueTypeDescriptor(), this.conversionService); }\n\n\tprivate @Nullable Object convertKey(Object sourceKey, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceKey; }\n\t\treturn this.conversionService.convert(sourceKey, sourceType.getMapKeyTypeDescriptor(sourceKey), targetType); }\n\n\tprivate @Nullable Object convertValue(Object sourceValue, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) { if (targetType == null) {\n\t\t\treturn sourceValue; } return this.conversionService.convert(sourceValue, sourceType.getMapValueTypeDescriptor(sourceValue), targetType);\n\t} private static class MapEntry { private final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value; public MapEntry(@Nullable Object key, @Nullable Object value) {\n\t\t\tthis.key = key;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tpublic void addToMap(Map<Object, Object> map) {\n\t\t\tmap.put(this.key, this.value);\n\t\t} }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "cbfff658ed44cc1b063e81b0287ffd3e0a7c06f298e962a8265bcb081eb093a3", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "partially-compact-layout", "level": 10, "line_count": 83, "local_path": "layout/partially-compact-layout/I10__spring-framework__MapToMapConverter__0daf5581.java", "order": 10, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 91, "line_break_groups_removed": 36, "line_breaks_removed": 46, "whitespace_characters_removed": 66}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-d79a0daf5581-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1201, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-72386cd36bc2-I11", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService conversionService) {\n\t\tthis.conversionService = conversionService;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> getConvertibleTypes() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn canConvertKey(sourceType, targetType) && canConvertValue(sourceType, targetType);\n\t}\n\n\t@Override\n\tpublic @Nullable Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\tif (source == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> sourceMap = (Map<Object, Object>) source;\n\n\t\t// Shortcut if possible...\n\t\tboolean copyRequired = !targetType.getType().isInstance(source);\n\t\tif (!copyRequired && sourceMap.isEmpty()) {\n\t\t\treturn sourceMap;\n\t\t}\n\t\tTypeDescriptor keyDesc = targetType.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor valueDesc = targetType.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> targetEntries = new ArrayList<>(sourceMap.size());\n\t\tfor (Map.Entry<Object, Object> entry : sourceMap.entrySet()) {\n\t\t\tObject sourceKey = entry.getKey();\n\t\t\tObject sourceValue = entry.getValue();\n\t\t\tObject targetKey = convertKey(sourceKey, sourceType, keyDesc);\n\t\t\tObject targetValue = convertValue(sourceValue, sourceType, valueDesc);\n\t\t\ttargetEntries.add(new MapEntry(targetKey, targetValue));\n\t\t\tif (sourceKey != targetKey || sourceValue != targetValue) {\n\t\t\t\tcopyRequired = true;\n\t\t\t}\n\t\t}\n\t\tif (!copyRequired) {\n\t\t\treturn sourceMap;\n\t\t}\n\n\t\tMap<Object, Object> targetMap = CollectionFactory.createMap(targetType.getType(),\n\t\t\t\t(keyDesc != null ? keyDesc.getType() : null), sourceMap.size());\n\n\t\tfor (MapEntry entry : targetEntries) {\n\t\t\tentry.addToMap(targetMap);\n\t\t}\n\t\treturn targetMap;\n\t}\n\n\n\t// internal helpers\n\n\tprivate boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(),\n\t\t\t\ttargetType.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(),\n\t\t\t\ttargetType.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object convertKey(Object sourceKey, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceKey;\n\t\t}\n\t\treturn this.conversionService.convert(sourceKey, sourceType.getMapKeyTypeDescriptor(sourceKey), targetType);\n\t}\n\n\tprivate @Nullable Object convertValue(Object sourceValue, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceValue;\n\t\t}\n\t\treturn this.conversionService.convert(sourceValue, sourceType.getMapValueTypeDescriptor(sourceValue), targetType);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object key, @Nullable Object value) {\n\t\t\tthis.key = key;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tpublic void addToMap(Map<Object, Object> map) {\n\t\t\tmap.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 129, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__MapToMapConverter__6cd36bc2.java", "order": 11, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-72386cd36bc2-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1202, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-84b1981cf085-I12", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService conversionService) {\n\t\tthis.conversionService = conversionService;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> getConvertibleTypes() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn canConvertKey(sourceType, targetType) && canConvertValue(sourceType, targetType);\n\t}\n\n\t@Override\n\tpublic @Nullable Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\tif (source == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> sourceMap = (Map<Object, Object>) source;\n\n\t\t// Shortcut if possible...\n\t\tboolean copyRequired = !targetType.getType().isInstance(source);\n\t\tif (!copyRequired && sourceMap.isEmpty()) {\n\t\t\treturn sourceMap;\n\t\t}\n\t\tTypeDescriptor keyDesc = targetType.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor valueDesc = targetType.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> targetEntries = new ArrayList<>(sourceMap.size());\n\t\tfor (Map.Entry<Object, Object> entry : sourceMap.entrySet()) {\n\t\t\tObject sourceKey = entry.getKey();\n\t\t\tObject sourceValue = entry.getValue();\n\t\t\tObject targetKey = convertKey(sourceKey, sourceType, keyDesc);\n\t\t\tObject targetValue = convertValue(sourceValue, sourceType, valueDesc);\n\t\t\ttargetEntries.add(new MapEntry(targetKey, targetValue));\n\t\t\tif (sourceKey != targetKey || sourceValue != targetValue) {\n\t\t\t\tcopyRequired = true;\n\t\t\t}\n\t\t}\n\t\tif (!copyRequired) {\n\t\t\treturn sourceMap;\n\t\t}\n\n\t\tMap<Object, Object> targetMap = CollectionFactory.createMap(targetType.getType(),\n\t\t\t\t(keyDesc != null ? keyDesc.getType() : null), sourceMap.size());\n\n\t\tfor (MapEntry entry : targetEntries) {\n\t\t\tentry.addToMap(targetMap);\n\t\t}\n\t\treturn targetMap;\n\t}\n\n\n\t// internal helpers\n\n\tprivate boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(),\n\t\t\t\ttargetType.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(),\n\t\t\t\ttargetType.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object convertKey(Object sourceKey, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceKey;\n\t\t}\n\t\treturn this.conversionService.convert(sourceKey, sourceType.getMapKeyTypeDescriptor(sourceKey), targetType);\n\t}\n\n\tprivate @Nullable Object convertValue(Object sourceValue, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceValue;\n\t\t}\n\t\treturn this.conversionService.convert(sourceValue, sourceType.getMapValueTypeDescriptor(sourceValue), targetType);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object key, @Nullable Object value) {\n\t\t\tthis.key = key;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tpublic void addToMap(Map<Object, Object> map) {\n\t\t\tmap.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 129, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__MapToMapConverter__981cf085.java", "order": 12, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-84b1981cf085-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1203, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f5cedf13269c-I13", "source": "package org.springframework.core.convert.support;\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.core.CollectionFactory;\nimport org.springframework.core.convert.ConversionService;\nimport org.springframework.core.convert.TypeDescriptor;\nimport org.springframework.core.convert.converter.ConditionalGenericConverter;\n\n/**\n * Converts a Map to another Map.\n *\n * <p>First, creates a new Map of the requested targetType with a size equal to the\n * size of the source Map. Then copies each element in the source map to the target map.\n * Will perform a conversion from the source map's parameterized K,V types to the target\n * map's parameterized types K,V if necessary.\n *\n * @author Keith Donald\n * @author Juergen Hoeller\n * @since 3.0\n */\nfinal class MapToMapConverter implements ConditionalGenericConverter {\n\n\tprivate final ConversionService conversionService;\n\n\n\tpublic MapToMapConverter(ConversionService conversionService) {\n\t\tthis.conversionService = conversionService;\n\t}\n\n\n\t@Override\n\tpublic Set<ConvertiblePair> getConvertibleTypes() {\n\t\treturn Collections.singleton(new ConvertiblePair(Map.class, Map.class));\n\t}\n\n\t@Override\n\tpublic boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn canConvertKey(sourceType, targetType) && canConvertValue(sourceType, targetType);\n\t}\n\n\t@Override\n\tpublic @Nullable Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\tif (source == null) {\n\t\t\treturn null;\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tMap<Object, Object> sourceMap = (Map<Object, Object>) source;\n\n\t\t// Shortcut if possible...\n\t\tboolean copyRequired = !targetType.getType().isInstance(source);\n\t\tif (!copyRequired && sourceMap.isEmpty()) {\n\t\t\treturn sourceMap;\n\t\t}\n\t\tTypeDescriptor keyDesc = targetType.getMapKeyTypeDescriptor();\n\t\tTypeDescriptor valueDesc = targetType.getMapValueTypeDescriptor();\n\n\t\tList<MapEntry> targetEntries = new ArrayList<>(sourceMap.size());\n\t\t{\n\t\t  java.util.Iterator<?> loopIterator = (sourceMap.entrySet()).iterator();\n\t\t  while (loopIterator.hasNext()) {\n\t\t    Map.Entry<Object, Object> entry = (Map.Entry<Object, Object>) loopIterator.next();\n\t\t    Object sourceKey = entry.getKey();\n\t\t    Object sourceValue = entry.getValue();\n\t\t    Object targetKey = convertKey(sourceKey, sourceType, keyDesc);\n\t\t    Object targetValue = convertValue(sourceValue, sourceType, valueDesc);\n\t\t    targetEntries.add(new MapEntry(targetKey, targetValue));\n\t\t    if (sourceKey != targetKey || sourceValue != targetValue) {\n\t\t    \tcopyRequired = true;\n\t\t    }\n\t\t  }\n\t\t}\n\t\tif (!copyRequired) {\n\t\t\treturn sourceMap;\n\t\t}\n\n\t\tMap<Object, Object> targetMap = CollectionFactory.createMap(targetType.getType(),\n\t\t\t\t(keyDesc != null ? keyDesc.getType() : null), sourceMap.size());\n\n\t\t{\n\t\t  java.util.Iterator<?> loopIteratorA = (targetEntries).iterator();\n\t\t  while (loopIteratorA.hasNext()) {\n\t\t    MapEntry entry = (MapEntry) loopIteratorA.next();\n\t\t    entry.addToMap(targetMap);\n\t\t  }\n\t\t}\n\t\treturn targetMap;\n\t}\n\n\n\t// internal helpers\n\n\tprivate boolean canConvertKey(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapKeyTypeDescriptor(),\n\t\t\t\ttargetType.getMapKeyTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate boolean canConvertValue(TypeDescriptor sourceType, TypeDescriptor targetType) {\n\t\treturn ConversionUtils.canConvertElements(sourceType.getMapValueTypeDescriptor(),\n\t\t\t\ttargetType.getMapValueTypeDescriptor(), this.conversionService);\n\t}\n\n\tprivate @Nullable Object convertKey(Object sourceKey, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceKey;\n\t\t}\n\t\treturn this.conversionService.convert(sourceKey, sourceType.getMapKeyTypeDescriptor(sourceKey), targetType);\n\t}\n\n\tprivate @Nullable Object convertValue(Object sourceValue, TypeDescriptor sourceType, @Nullable TypeDescriptor targetType) {\n\t\tif (targetType == null) {\n\t\t\treturn sourceValue;\n\t\t}\n\t\treturn this.conversionService.convert(sourceValue, sourceType.getMapValueTypeDescriptor(sourceValue), targetType);\n\t}\n\n\n\tprivate static class MapEntry {\n\n\t\tprivate final @Nullable Object key;\n\n\t\tprivate final @Nullable Object value;\n\n\t\tpublic MapEntry(@Nullable Object key, @Nullable Object value) {\n\t\t\tthis.key = key;\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tpublic void addToMap(Map<Object, Object> map) {\n\t\t\tmap.put(this.key, this.value);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__MapToMapConverter__bec81cad.java", "base_sample_id": "source-b72dc35f150908c5", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "67071d601152c9a5c19e2ba2620e60b8494793dfcc9c6d39326c0d2aa832f004", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java", "interference": "lower-for-to-while", "level": 13, "line_count": 137, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__MapToMapConverter__df13269c.java", "order": 13, "original_content_sha256": "9fb7fd051fc4c285fd0e67c9579fd3a6a21344f0dbbc2c98ad3a196ade645a4e", "parent_variant_id": "int-ac8cbec81cad-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-core/src/main/java/org/springframework/core/convert/support/MapToMapConverter.java#L32-L148", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 2, "enhanced_for_loops_found": 2, "enhanced_for_loops_lowered_to_while": 2, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 2, "for_loops_lowered_to_while": 2, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "MapToMapConverter", "variant_id": "int-f5cedf13269c-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1204, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1b33e7eb8eab-SRC", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String payload, int startPos, int endPos, long value) {\n\t\tsuper(payload, startPos, endPos);\n\t\tthis.value = new TypedValue(value);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue getLiteralValue() {\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean isCompilable() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void generateCode(MethodVisitor mv, CodeFlow cf) {\n\t\tmv.visitLdcInsn(this.value.getValue());\n\t\tcf.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": null, "level": 0, "line_count": 40, "local_path": "source-original/SRC__spring-framework__LongLiteral__e7eb8eab.java", "order": 0, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-1b33e7eb8eab-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1177, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-09c188731502-I01", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n\n\n\n\n\n\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String payload, int startPos, int endPos, long value) {\n\t\tsuper(payload, startPos, endPos);\n\t\tthis.value = new TypedValue(value);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue getLiteralValue() {\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean isCompilable() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void generateCode(MethodVisitor mv, CodeFlow cf) {\n\t\tmv.visitLdcInsn(this.value.getValue());\n\t\tcf.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "63eb5492de039ad2205eae1301c74afb713f526f86be146b7b000af20f7115a0", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "remove-comments", "level": 1, "line_count": 40, "local_path": "comments/remove-comments/I01__spring-framework__LongLiteral__88731502.java", "order": 1, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 115, "comments_removed": 1}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-09c188731502-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1178, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-af67e2f8a07c-I02", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String pay, int start, int end, long val) {\n\t\tsuper(pay, start, end);\n\t\tthis.value = new TypedValue(val);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue get() {\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean is() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void generate(MethodVisitor mv, CodeFlow cf) {\n\t\tmv.visitLdcInsn(this.value.getValue());\n\t\tcf.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "93ab1a9ad1977fb114264ecfe120c435adb60a9369875a63034757072f91b556", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "shorten-identifiers", "level": 2, "line_count": 40, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__LongLiteral__e2f8a07c.java", "order": 2, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 6, "identifiers_declared": 6, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-af67e2f8a07c-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1179, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-604c9c09af4e-I03", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String profile, int schedule, int config, long token) {\n\t\tsuper(profile, schedule, config);\n\t\tthis.value = new TypedValue(token);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue validateRequest() {\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean refreshBatch() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void buildMessage(MethodVisitor age, CodeFlow key) {\n\t\tage.visitLdcInsn(this.value.getValue());\n\t\tkey.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "ebff5609887d37f44dbbf41586faf013f9c50c3bc48c045f7f5247e5d81a16cc", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "mislead-identifiers", "level": 3, "line_count": 40, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__LongLiteral__9c09af4e.java", "order": 3, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 6, "identifiers_declared": 6, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 1, "local_exact_length_matches": 4, "local_random_pool_selections": 6, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 3, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-604c9c09af4e-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1180, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-650b478f87f6-I04", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String a, int b, int c, long d) {\n\t\tsuper(a, b, c);\n\t\tthis.value = new TypedValue(d);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue a() {\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean b() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void c(MethodVisitor e, CodeFlow f) {\n\t\te.visitLdcInsn(this.value.getValue());\n\t\tf.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b5efc0dae24ea442e9d5d56505802f28044224f1731b1311ff5ea4c041e6b52c", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "garble-identifiers", "level": 4, "line_count": 40, "local_path": "identifiers/garble-identifiers/I04__spring-framework__LongLiteral__478f87f6.java", "order": 4, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 6, "identifiers_declared": 6, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-650b478f87f6-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1181, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-efb60b654502-I05", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String payload, int startPos, int endPos, long value) {\n\t\tsuper(payload, startPos, endPos);\n\t\tthis.value = new TypedValue(value);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue getLiteralValue() {\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean isCompilable() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void generateCode(MethodVisitor mv, CodeFlow cf) {\n\t\tmv.visitLdcInsn(this.value.getValue());\n\t\tcf.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "encode-integer-literals", "level": 5, "line_count": 40, "local_path": "expressions/encode-integer-literals/I05__spring-framework__LongLiteral__0b654502.java", "order": 5, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-efb60b654502-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1182, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6cd2462fc006-I06", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String payload, int startPos, int endPos, long value) {\n\t\tsuper(payload, startPos, endPos);\n\t\tthis.value = new TypedValue(value);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue getLiteralValue() {\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean isCompilable() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void generateCode(MethodVisitor mv, CodeFlow cf) {\n\t\tmv.visitLdcInsn(this.value.getValue());\n\t\tcf.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "invert-conditions", "level": 6, "line_count": 40, "local_path": "expressions/invert-conditions/I06__spring-framework__LongLiteral__462fc006.java", "order": 6, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-6cd2462fc006-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1183, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-139fed2f6c4b-I07", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String payload, int startPos, int endPos, long value) {\n\t\tsuper(payload, startPos, endPos);\nif (((0x7B69 ^ 0x7B69) != 0)) { throw new AssertionError(); }\n\n\t\tthis.value = new TypedValue(value);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue getLiteralValue() {\nif (((0xFB29 ^ 0xFB29) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean isCompilable() {\nif (((0xB1B3 ^ 0xB1B3) != 0)) { throw new AssertionError(); }\n\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void generateCode(MethodVisitor mv, CodeFlow cf) {\nif (((0xABD0 ^ 0xABD0) != 0)) { throw new AssertionError(); }\n\n\t\tmv.visitLdcInsn(this.value.getValue());\n\t\tcf.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "a34a778864ebe4a14058afd251072da6fb604af8c9af3535f34c9936fae26924", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "insert-dead-branches", "level": 7, "line_count": 48, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__LongLiteral__ed2f6c4b.java", "order": 7, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-139fed2f6c4b-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1184, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6880f1b806c8-I08", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String payload, int startPos, int endPos, long value) {\n\t\tsuper(payload, startPos, endPos);\n\t\tthis.value = new TypedValue(value);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue getLiteralValue() {\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean isCompilable() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void generateCode(MethodVisitor mv, CodeFlow cf) {\n{\n  int morningTemperature = 18;\n  int eveningTemperature = 14;\n  int lowerTemperature = morningTemperature;\n  if (eveningTemperature < lowerTemperature) {\n    lowerTemperature = eveningTemperature;\n  }\n}\n\n\t\tmv.visitLdcInsn(this.value.getValue());\n\t\tcf.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5d7e79a5ea9509938cc3e5f76a09c5b520cc48d552f5f163a18a11cb9c9edf66", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 49, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__LongLiteral__f1b806c8.java", "order": 8, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 4}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-6880f1b806c8-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1185, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-22786764bd6b-I09", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String payload, int startPos, int endPos, long value) {\n\t\tsuper(payload, startPos, endPos);\n\t\tthis.value = new TypedValue(value);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue getLiteralValue() {\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean isCompilable() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void generateCode(MethodVisitor mv, CodeFlow cf) {\n{boolean lI0O_f939a43b=((0xF6C6^0xF6C6)!=0);lI0O_f939a43b=!(!lI0O_f939a43b);}\n\n\t\tmv.visitLdcInsn(this.value.getValue());\n\t\tcf.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "17010a408cae527b14361f54e961616896faa86025d9d3dffcdffe07c29c89b4", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 42, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__LongLiteral__6764bd6b.java", "order": 9, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-22786764bd6b-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1186, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8ac3c9af90d8-I10", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue; import org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal { private final TypedValue value;\n\n\n\tpublic LongLiteral(String payload, int startPos, int endPos, long value) {\n\t\tsuper(payload, startPos, endPos);\n\t\tthis.value = new TypedValue(value);\n\t\tthis.exitTypeDescriptor = \"J\"; } @Override\n\tpublic TypedValue getLiteralValue() {\n\t\treturn this.value;\n\t} @Override public boolean isCompilable() {\n\t\treturn true;\n\t} @Override\n\tpublic void generateCode(MethodVisitor mv, CodeFlow cf) {\n\t\tmv.visitLdcInsn(this.value.getValue()); cf.pushDescriptor(this.exitTypeDescriptor); } }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "6ab31fe7bdb2dcb1642daa2138f32116ab501a1e7b9e8e17d10a0e6a964e7b32", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "partially-compact-layout", "level": 10, "line_count": 24, "local_path": "layout/partially-compact-layout/I10__spring-framework__LongLiteral__c9af90d8.java", "order": 10, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 25, "line_break_groups_removed": 10, "line_breaks_removed": 16, "whitespace_characters_removed": 15}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-8ac3c9af90d8-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1187, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f0690a3a9b6e-I11", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String payload, int startPos, int endPos, long value) {\n\t\tsuper(payload, startPos, endPos);\n\t\tthis.value = new TypedValue(value);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue getLiteralValue() {\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean isCompilable() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void generateCode(MethodVisitor mv, CodeFlow cf) {\n\t\tmv.visitLdcInsn(this.value.getValue());\n\t\tcf.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 40, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__LongLiteral__0a3a9b6e.java", "order": 11, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-f0690a3a9b6e-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1188, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-da9c15f44f56-I12", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String payload, int startPos, int endPos, long value) {\n\t\tsuper(payload, startPos, endPos);\n\t\tthis.value = new TypedValue(value);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue getLiteralValue() {\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean isCompilable() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void generateCode(MethodVisitor mv, CodeFlow cf) {\n\t\tmv.visitLdcInsn(this.value.getValue());\n\t\tcf.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 40, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__LongLiteral__15f44f56.java", "order": 12, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-da9c15f44f56-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1189, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-45d397472a3e-I13", "source": "package org.springframework.expression.spel.ast;\nimport org.springframework.asm.MethodVisitor;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.expression.spel.CodeFlow;\n\n/**\n * Expression language AST node that represents a long integer literal.\n *\n * @author Andy Clement\n * @since 3.0\n */\npublic class LongLiteral extends Literal {\n\n\tprivate final TypedValue value;\n\n\n\tpublic LongLiteral(String payload, int startPos, int endPos, long value) {\n\t\tsuper(payload, startPos, endPos);\n\t\tthis.value = new TypedValue(value);\n\t\tthis.exitTypeDescriptor = \"J\";\n\t}\n\n\n\t@Override\n\tpublic TypedValue getLiteralValue() {\n\t\treturn this.value;\n\t}\n\n\t@Override\n\tpublic boolean isCompilable() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic void generateCode(MethodVisitor mv, CodeFlow cf) {\n\t\tmv.visitLdcInsn(this.value.getValue());\n\t\tcf.pushDescriptor(this.exitTypeDescriptor);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__LongLiteral__e7eb8eab.java", "base_sample_id": "source-22efcab2122f6668", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java", "interference": "lower-for-to-while", "level": 13, "line_count": 40, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__LongLiteral__97472a3e.java", "order": 13, "original_content_sha256": "6488062e2bd763d834b74c6cabd60fe4d7d93a73d79ceff4d70663cd0f67f5e7", "parent_variant_id": "int-1b33e7eb8eab-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-expression/src/main/java/org/springframework/expression/spel/ast/LongLiteral.java#L23-L57", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "LongLiteral", "variant_id": "int-45d397472a3e-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1190, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-70df69f7a826-SRC", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n/**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue {\n\n\t/**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, @Nullable String typeName)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": null, "level": 0, "line_count": 51, "local_path": "source-original/SRC__spring-framework__SqlTypeValue__69f7a826.java", "order": 0, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-70df69f7a826-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1331, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-edc57dc60d49-I01", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npublic interface SqlTypeValue {\n\n\t\n\n\n\n\n\n\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t\n\n\n\n\n\n\n\n\n\n\tvoid setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, @Nullable String typeName)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "2e4dc55bb247f184f032deabce551ea391c3de657ed30eb51dbadc9600326c70", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "remove-comments", "level": 1, "line_count": 51, "local_path": "comments/remove-comments/I01__spring-framework__SqlTypeValue__7dc60d49.java", "order": 1, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1600, "comments_removed": 3}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-edc57dc60d49-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1332, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-98c8ff3c675e-I02", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n/**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue {\n\n\t/**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid set(PreparedStatement ps, int param, int sql2, @Nullable String type)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "cafb683a312a9b726221b78f8fa24b26ce5b1d5e7ca0f626c8dd3baa1f12aa6f", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "shorten-identifiers", "level": 2, "line_count": 51, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__SqlTypeValue__ff3c675e.java", "order": 2, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 4, "local_name_collisions_avoided": 1, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-98c8ff3c675e-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1333, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2b6ce0a54d4f-I03", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n/**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue {\n\n\t/**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid checkRequest(PreparedStatement map, int localOrder, int context, @Nullable String nextItem)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a2fc3895f7a18b29e95b23c58abdb91f6951a7e8cdb36f03e14abe06cd2512db", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "mislead-identifiers", "level": 3, "line_count": 51, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__SqlTypeValue__e0a54d4f.java", "order": 3, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 4, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 3, "local_random_pool_selections": 4, "local_total_length_difference": 1, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 1, "method_exact_length_matches": 1, "method_name_groups": 1, "method_random_pool_selections": 1, "method_total_length_difference": 0}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-2b6ce0a54d4f-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1334, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4b20af11f7d4-I04", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n/**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue {\n\n\t/**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid a(PreparedStatement a, int b, int c, @Nullable String d)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "d2edd4101d473a9e820593dd764d98f41ebe035f282f380d999a1f09f4311605", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "garble-identifiers", "level": 4, "line_count": 51, "local_path": "identifiers/garble-identifiers/I04__spring-framework__SqlTypeValue__af11f7d4.java", "order": 4, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 4, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-4b20af11f7d4-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1335, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-72cefeebc88b-I05", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n/**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue {\n\n\t/**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, @Nullable String typeName)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "encode-integer-literals", "level": 5, "line_count": 51, "local_path": "expressions/encode-integer-literals/I05__spring-framework__SqlTypeValue__feebc88b.java", "order": 5, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-72cefeebc88b-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1336, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fa8c5dc0e89c-I06", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n/**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue {\n\n\t/**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, @Nullable String typeName)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "invert-conditions", "level": 6, "line_count": 51, "local_path": "expressions/invert-conditions/I06__spring-framework__SqlTypeValue__5dc0e89c.java", "order": 6, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-fa8c5dc0e89c-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1337, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6547186c7185-I07", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n/**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue {\n\n\t/**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, @Nullable String typeName)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "insert-dead-branches", "level": 7, "line_count": 51, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__SqlTypeValue__186c7185.java", "order": 7, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-6547186c7185-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1338, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-645f8f9e06fd-I08", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n/**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue {\n\n\t/**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, @Nullable String typeName)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 51, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__SqlTypeValue__8f9e06fd.java", "order": 8, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-645f8f9e06fd-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1339, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b067689e1fcc-I09", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n/**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue {\n\n\t/**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, @Nullable String typeName)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 51, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__SqlTypeValue__689e1fcc.java", "order": 9, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-b067689e1fcc-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1340, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0a96ae2ca415-I10", "source": "package org.springframework.jdbc.core; import java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils; /**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue { /**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, @Nullable String typeName) throws SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "f702913f75a54a2edf139ed38ad79cb393aa0a01828bb20090e844c602e95390", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "partially-compact-layout", "level": 10, "line_count": 45, "local_path": "layout/partially-compact-layout/I10__spring-framework__SqlTypeValue__ae2ca415.java", "order": 10, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 12, "line_break_groups_removed": 4, "line_breaks_removed": 6, "whitespace_characters_removed": 6}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-0a96ae2ca415-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1341, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3f000174acea-I11", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n/**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue {\n\n\t/**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, @Nullable String typeName)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 51, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__SqlTypeValue__0174acea.java", "order": 11, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-3f000174acea-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1342, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-44bbac229198-I12", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n/**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue {\n\n\t/**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, @Nullable String typeName)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 51, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__SqlTypeValue__ac229198.java", "order": 12, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-44bbac229198-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1343, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c19be7e3e79e-I13", "source": "package org.springframework.jdbc.core;\nimport java.sql.PreparedStatement;\nimport java.sql.SQLException;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.jdbc.support.JdbcUtils;\n\n/**\n * Interface to be implemented for setting values for more complex database-specific\n * types not supported by the standard {@code setObject} method. This is\n * effectively an extended variant of {@link org.springframework.jdbc.support.SqlValue}.\n *\n * <p>Implementations perform the actual work of setting the actual values. They must\n * implement the callback method {@code setTypeValue} which can throw SQLExceptions\n * that will be caught and translated by the calling code. This callback method has\n * access to the underlying Connection via the given PreparedStatement object, if that\n * should be needed to create any database-specific objects.\n *\n * @author Thomas Risberg\n * @author Juergen Hoeller\n * @since 1.1\n * @see java.sql.Types\n * @see java.sql.PreparedStatement#setObject\n * @see JdbcOperations#update(String, Object[], int[])\n * @see org.springframework.jdbc.support.SqlValue\n */\npublic interface SqlTypeValue {\n\n\t/**\n\t * Constant that indicates an unknown (or unspecified) SQL type.\n\t * Passed into {@code setTypeValue} if the original operation method\n\t * does not specify an SQL type.\n\t * @see java.sql.Types\n\t * @see JdbcOperations#update(String, Object[])\n\t */\n\tint TYPE_UNKNOWN = JdbcUtils.TYPE_UNKNOWN;\n\n\n\t/**\n\t * Set the type value on the given PreparedStatement.\n\t * @param ps the PreparedStatement to work on\n\t * @param paramIndex the index of the parameter for which we need to set the value\n\t * @param sqlType the SQL type of the parameter we are setting\n\t * @param typeName the type name of the parameter (optional)\n\t * @throws SQLException if an SQLException is encountered while setting parameter values\n\t * @see java.sql.Types\n\t * @see java.sql.PreparedStatement#setObject\n\t */\n\tvoid setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, @Nullable String typeName)\n\t\t\tthrows SQLException;\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__SqlTypeValue__69f7a826.java", "base_sample_id": "source-2a10ec9111911d1f", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java", "interference": "lower-for-to-while", "level": 13, "line_count": 51, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__SqlTypeValue__e7e3e79e.java", "order": 13, "original_content_sha256": "af027294506fe3052a72e336e2c488fe1fe74adb2b5d81196ba9f90be99dac19", "parent_variant_id": "int-70df69f7a826-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jdbc/src/main/java/org/springframework/jdbc/core/SqlTypeValue.java#L26-L70", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "SqlTypeValue", "variant_id": "int-c19be7e3e79e-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1344, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-228f7be051ed-SRC", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t/**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */\n\tpublic void setEndpointRegistry(@Nullable JmsListenerEndpointRegistry endpointRegistry) {\n\t\tthis.endpointRegistry = endpointRegistry;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */\n\tpublic @Nullable JmsListenerEndpointRegistry getEndpointRegistry() {\n\t\treturn this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void setMessageHandlerMethodFactory(@Nullable MessageHandlerMethodFactory messageHandlerMethodFactory) {\n\t\tthis.messageHandlerMethodFactory = messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory getMessageHandlerMethodFactory() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void setContainerFactory(JmsListenerContainerFactory<?> containerFactory) {\n\t\tthis.containerFactory = containerFactory;\n\t}\n\n\t/**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */\n\tpublic void setContainerFactoryBeanName(String containerFactoryBeanName) {\n\t\tthis.containerFactoryBeanName = containerFactoryBeanName;\n\t}\n\n\t/**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void setBeanFactory(BeanFactory beanFactory) {\n\t\tthis.beanFactory = beanFactory;\n\t}\n\n\n\t@Override\n\tpublic void afterPropertiesSet() {\n\t\tregisterAllEndpoints();\n\t}\n\n\tprotected void registerAllEndpoints() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor descriptor : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer(\n\t\t\t\t\tdescriptor.endpoint, resolveContainerFactory(descriptor));\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> resolveContainerFactory(JmsListenerEndpointDescriptor descriptor) {\n\t\tif (descriptor.containerFactory != null) {\n\t\t\treturn descriptor.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tdescriptor.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint, @Nullable JmsListenerContainerFactory<?> factory) {\n\t\tAssert.notNull(endpoint, \"Endpoint must not be null\");\n\t\tAssert.hasText(endpoint.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor descriptor = new JmsListenerEndpointDescriptor(endpoint, factory);\n\n\t\tif (this.startImmediately) {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(descriptor.endpoint,\n\t\t\t\t\tresolveContainerFactory(descriptor), true);\n\t\t}\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(descriptor);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint) {\n\t\tregisterEndpoint(endpoint, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint endpoint,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> containerFactory) {\n\n\t\t\tthis.endpoint = endpoint;\n\t\t\tthis.containerFactory = containerFactory;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": null, "level": 0, "line_count": 185, "local_path": "source-original/SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "order": 0, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-228f7be051ed-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1135, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d1ef8b1bc373-I01", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n\n\n\n\n\n\n\n\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t\n\n\n\tpublic void setEndpointRegistry(@Nullable JmsListenerEndpointRegistry endpointRegistry) {\n\t\tthis.endpointRegistry = endpointRegistry;\n\t}\n\n\t\n\n\n\n\tpublic @Nullable JmsListenerEndpointRegistry getEndpointRegistry() {\n\t\treturn this.endpointRegistry;\n\t}\n\n\t\n\n\n\n\n\n\n\n\tpublic void setMessageHandlerMethodFactory(@Nullable MessageHandlerMethodFactory messageHandlerMethodFactory) {\n\t\tthis.messageHandlerMethodFactory = messageHandlerMethodFactory;\n\t}\n\n\t\n\n\n\tpublic @Nullable MessageHandlerMethodFactory getMessageHandlerMethodFactory() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t\n\n\n\n\n\n\tpublic void setContainerFactory(JmsListenerContainerFactory<?> containerFactory) {\n\t\tthis.containerFactory = containerFactory;\n\t}\n\n\t\n\n\n\n\n\n\n\tpublic void setContainerFactoryBeanName(String containerFactoryBeanName) {\n\t\tthis.containerFactoryBeanName = containerFactoryBeanName;\n\t}\n\n\t\n\n\n\n\t@Override\n\tpublic void setBeanFactory(BeanFactory beanFactory) {\n\t\tthis.beanFactory = beanFactory;\n\t}\n\n\n\t@Override\n\tpublic void afterPropertiesSet() {\n\t\tregisterAllEndpoints();\n\t}\n\n\tprotected void registerAllEndpoints() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor descriptor : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer(\n\t\t\t\t\tdescriptor.endpoint, resolveContainerFactory(descriptor));\n\t\t}\n\t\tthis.startImmediately = true;   \n\t}\n\n\tprivate JmsListenerContainerFactory<?> resolveContainerFactory(JmsListenerEndpointDescriptor descriptor) {\n\t\tif (descriptor.containerFactory != null) {\n\t\t\treturn descriptor.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t \n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tdescriptor.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t}\n\n\t\n\n\n\n\n\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint, @Nullable JmsListenerContainerFactory<?> factory) {\n\t\tAssert.notNull(endpoint, \"Endpoint must not be null\");\n\t\tAssert.hasText(endpoint.getId(), \"Endpoint id must be set\");\n\n\t\t \n\t\tJmsListenerEndpointDescriptor descriptor = new JmsListenerEndpointDescriptor(endpoint, factory);\n\n\t\tif (this.startImmediately) {   \n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(descriptor.endpoint,\n\t\t\t\t\tresolveContainerFactory(descriptor), true);\n\t\t}\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(descriptor);\n\t\t}\n\t}\n\n\t\n\n\n\n\n\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint) {\n\t\tregisterEndpoint(endpoint, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint endpoint,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> containerFactory) {\n\n\t\t\tthis.endpoint = endpoint;\n\t\t\tthis.containerFactory = containerFactory;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "1327208ea52e5343d7c316240db19871ad55ec011529b4b666ade69e53116847", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "remove-comments", "level": 1, "line_count": 185, "local_path": "comments/remove-comments/I01__spring-framework__JmsListenerEndpointRegistrar__8b1bc373.java", "order": 1, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 2475, "comments_removed": 14}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-d1ef8b1bc373-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1136, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8e8b3827c6b9-I02", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t/**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */\n\tpublic void set(@Nullable JmsListenerEndpointRegistry endpoint2) {\n\t\tthis.endpointRegistry = endpoint2;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */\n\tpublic @Nullable JmsListenerEndpointRegistry get() {\n\t\treturn this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void set2(@Nullable MessageHandlerMethodFactory message) {\n\t\tthis.messageHandlerMethodFactory = message;\n\t}\n\n\t/**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory get2() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void set3(JmsListenerContainerFactory<?> container) {\n\t\tthis.containerFactory = container;\n\t}\n\n\t/**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */\n\tpublic void set4(String container2) {\n\t\tthis.containerFactoryBeanName = container2;\n\t}\n\n\t/**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void set5(BeanFactory bean) {\n\t\tthis.beanFactory = bean;\n\t}\n\n\n\t@Override\n\tpublic void after() {\n\t\tregister();\n\t}\n\n\tprotected void register() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor des : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer(\n\t\t\t\t\tdes.endpoint, resolve(des));\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> resolve(JmsListenerEndpointDescriptor des2) {\n\t\tif (des2.containerFactory != null) {\n\t\t\treturn des2.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tdes2.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void register2(JmsListenerEndpoint end, @Nullable JmsListenerContainerFactory<?> fac) {\n\t\tAssert.notNull(end, \"Endpoint must not be null\");\n\t\tAssert.hasText(end.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor des3 = new JmsListenerEndpointDescriptor(end, fac);\n\n\t\tif (this.startImmediately) {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(des3.endpoint,\n\t\t\t\t\tresolve(des3), true);\n\t\t}\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(des3);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */\n\tpublic void register2(JmsListenerEndpoint end2) {\n\t\tregister2(end2, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint end3,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> container3) {\n\n\t\t\tthis.endpoint = end3;\n\t\t\tthis.containerFactory = container3;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7a2872bb3799929036826c7f6e1cd47335d72148777bf55e276fb65ddd30a19a", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "shorten-identifiers", "level": 2, "line_count": 185, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__JmsListenerEndpointRegistrar__3827c6b9.java", "order": 2, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 20, "identifiers_declared": 13, "local_name_collisions_avoided": 7, "method_calls_renamed": 4, "method_declarations_renamed": 12, "method_name_collisions_avoided": 6, "method_name_groups": 11}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-8e8b3827c6b9-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1137, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-694ace123a6d-I03", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t/**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */\n\tpublic void validateSession(@Nullable JmsListenerEndpointRegistry pendingAccount) {\n\t\tthis.endpointRegistry = pendingAccount;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */\n\tpublic @Nullable JmsListenerEndpointRegistry validateAccount() {\n\t\treturn this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void validateBalance(@Nullable MessageHandlerMethodFactory pendingAddress) {\n\t\tthis.messageHandlerMethodFactory = pendingAddress;\n\t}\n\n\t/**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory validateAddress() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void validateMessage(JmsListenerContainerFactory<?> defaultBalance) {\n\t\tthis.containerFactory = defaultBalance;\n\t}\n\n\t/**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */\n\tpublic void validateRequest(String defaultMessage) {\n\t\tthis.containerFactoryBeanName = defaultMessage;\n\t}\n\n\t/**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void validateRecord(BeanFactory activeState) {\n\t\tthis.beanFactory = activeState;\n\t}\n\n\n\t@Override\n\tpublic void refreshRequest() {\n\t\tvalidateClient();\n\t}\n\n\tprotected void validateClient() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor finalScore : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer(\n\t\t\t\t\tfinalScore.endpoint, refreshAddress(finalScore));\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> refreshAddress(JmsListenerEndpointDescriptor finalOrder) {\n\t\tif (finalOrder.containerFactory != null) {\n\t\t\treturn finalOrder.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tfinalOrder.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void refreshAccount(JmsListenerEndpoint nextMode, @Nullable JmsListenerContainerFactory<?> feature) {\n\t\tAssert.notNull(nextMode, \"Endpoint must not be null\");\n\t\tAssert.hasText(nextMode.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor localScore = new JmsListenerEndpointDescriptor(nextMode, feature);\n\n\t\tif (this.startImmediately) {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(localScore.endpoint,\n\t\t\t\t\trefreshAddress(localScore), true);\n\t\t}\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(localScore);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */\n\tpublic void refreshAccount(JmsListenerEndpoint response) {\n\t\trefreshAccount(response, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint nextData,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> pendingRequest) {\n\n\t\t\tthis.endpoint = nextData;\n\t\t\tthis.containerFactory = pendingRequest;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "963811e8c3e4a897e686ee9c3b059857a7e463cd498271397e0b3fa6b021d2d5", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "mislead-identifiers", "level": 3, "line_count": 185, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__JmsListenerEndpointRegistrar__ce123a6d.java", "order": 3, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 20, "identifiers_declared": 13, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 1, "local_exact_length_matches": 8, "local_random_pool_selections": 13, "local_total_length_difference": 29, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 4, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 31, "method_declarations_renamed": 12, "method_exact_length_matches": 1, "method_name_groups": 11, "method_random_pool_selections": 11, "method_total_length_difference": 75}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-694ace123a6d-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1138, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-351b5b3a9847-I04", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t/**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */\n\tpublic void a(@Nullable JmsListenerEndpointRegistry a) {\n\t\tthis.endpointRegistry = a;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */\n\tpublic @Nullable JmsListenerEndpointRegistry b() {\n\t\treturn this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void c(@Nullable MessageHandlerMethodFactory b) {\n\t\tthis.messageHandlerMethodFactory = b;\n\t}\n\n\t/**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory d() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void e(JmsListenerContainerFactory<?> c) {\n\t\tthis.containerFactory = c;\n\t}\n\n\t/**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */\n\tpublic void f(String d) {\n\t\tthis.containerFactoryBeanName = d;\n\t}\n\n\t/**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void g(BeanFactory e) {\n\t\tthis.beanFactory = e;\n\t}\n\n\n\t@Override\n\tpublic void h() {\n\t\ti();\n\t}\n\n\tprotected void i() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor f : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer(\n\t\t\t\t\tf.endpoint, j(f));\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> j(JmsListenerEndpointDescriptor g) {\n\t\tif (g.containerFactory != null) {\n\t\t\treturn g.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tg.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void k(JmsListenerEndpoint h, @Nullable JmsListenerContainerFactory<?> i) {\n\t\tAssert.notNull(h, \"Endpoint must not be null\");\n\t\tAssert.hasText(h.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor j = new JmsListenerEndpointDescriptor(h, i);\n\n\t\tif (this.startImmediately) {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(j.endpoint,\n\t\t\t\t\tj(j), true);\n\t\t}\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(j);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */\n\tpublic void k(JmsListenerEndpoint k) {\n\t\tk(k, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint l,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> m) {\n\n\t\t\tthis.endpoint = l;\n\t\t\tthis.containerFactory = m;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "c4737346fb0207dd87c3dc12913ca2e908afe2a0f65188aad845ae8dd7ba7bcb", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "garble-identifiers", "level": 4, "line_count": 185, "local_path": "identifiers/garble-identifiers/I04__spring-framework__JmsListenerEndpointRegistrar__5b3a9847.java", "order": 4, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 20, "identifiers_declared": 13, "local_name_collisions_avoided": 0, "method_calls_renamed": 4, "method_declarations_renamed": 12, "method_name_collisions_avoided": 0, "method_name_groups": 11}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-351b5b3a9847-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1139, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ebb46e485306-I05", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t/**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */\n\tpublic void setEndpointRegistry(@Nullable JmsListenerEndpointRegistry endpointRegistry) {\n\t\tthis.endpointRegistry = endpointRegistry;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */\n\tpublic @Nullable JmsListenerEndpointRegistry getEndpointRegistry() {\n\t\treturn this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void setMessageHandlerMethodFactory(@Nullable MessageHandlerMethodFactory messageHandlerMethodFactory) {\n\t\tthis.messageHandlerMethodFactory = messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory getMessageHandlerMethodFactory() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void setContainerFactory(JmsListenerContainerFactory<?> containerFactory) {\n\t\tthis.containerFactory = containerFactory;\n\t}\n\n\t/**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */\n\tpublic void setContainerFactoryBeanName(String containerFactoryBeanName) {\n\t\tthis.containerFactoryBeanName = containerFactoryBeanName;\n\t}\n\n\t/**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void setBeanFactory(BeanFactory beanFactory) {\n\t\tthis.beanFactory = beanFactory;\n\t}\n\n\n\t@Override\n\tpublic void afterPropertiesSet() {\n\t\tregisterAllEndpoints();\n\t}\n\n\tprotected void registerAllEndpoints() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor descriptor : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer(\n\t\t\t\t\tdescriptor.endpoint, resolveContainerFactory(descriptor));\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> resolveContainerFactory(JmsListenerEndpointDescriptor descriptor) {\n\t\tif (descriptor.containerFactory != null) {\n\t\t\treturn descriptor.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tdescriptor.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint, @Nullable JmsListenerContainerFactory<?> factory) {\n\t\tAssert.notNull(endpoint, \"Endpoint must not be null\");\n\t\tAssert.hasText(endpoint.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor descriptor = new JmsListenerEndpointDescriptor(endpoint, factory);\n\n\t\tif (this.startImmediately) {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(descriptor.endpoint,\n\t\t\t\t\tresolveContainerFactory(descriptor), true);\n\t\t}\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(descriptor);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint) {\n\t\tregisterEndpoint(endpoint, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint endpoint,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> containerFactory) {\n\n\t\t\tthis.endpoint = endpoint;\n\t\t\tthis.containerFactory = containerFactory;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "encode-integer-literals", "level": 5, "line_count": 185, "local_path": "expressions/encode-integer-literals/I05__spring-framework__JmsListenerEndpointRegistrar__6e485306.java", "order": 5, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-ebb46e485306-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1140, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e74d89aad944-I06", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t/**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */\n\tpublic void setEndpointRegistry(@Nullable JmsListenerEndpointRegistry endpointRegistry) {\n\t\tthis.endpointRegistry = endpointRegistry;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */\n\tpublic @Nullable JmsListenerEndpointRegistry getEndpointRegistry() {\n\t\treturn this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void setMessageHandlerMethodFactory(@Nullable MessageHandlerMethodFactory messageHandlerMethodFactory) {\n\t\tthis.messageHandlerMethodFactory = messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory getMessageHandlerMethodFactory() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void setContainerFactory(JmsListenerContainerFactory<?> containerFactory) {\n\t\tthis.containerFactory = containerFactory;\n\t}\n\n\t/**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */\n\tpublic void setContainerFactoryBeanName(String containerFactoryBeanName) {\n\t\tthis.containerFactoryBeanName = containerFactoryBeanName;\n\t}\n\n\t/**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void setBeanFactory(BeanFactory beanFactory) {\n\t\tthis.beanFactory = beanFactory;\n\t}\n\n\n\t@Override\n\tpublic void afterPropertiesSet() {\n\t\tregisterAllEndpoints();\n\t}\n\n\tprotected void registerAllEndpoints() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor descriptor : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer(\n\t\t\t\t\tdescriptor.endpoint, resolveContainerFactory(descriptor));\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> resolveContainerFactory(JmsListenerEndpointDescriptor descriptor) {\n\t\tif (!((descriptor.containerFactory != null))) { if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tdescriptor.endpoint + \"] no factory was given and no default is set.\");\n\t\t} } else {\n\t\t\treturn descriptor.containerFactory;\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint, @Nullable JmsListenerContainerFactory<?> factory) {\n\t\tAssert.notNull(endpoint, \"Endpoint must not be null\");\n\t\tAssert.hasText(endpoint.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor descriptor = new JmsListenerEndpointDescriptor(endpoint, factory);\n\n\t\tif (!((this.startImmediately))) {\n\t\t\tthis.endpointDescriptors.add(descriptor);\n\t\t} else {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(descriptor.endpoint,\n\t\t\t\t\tresolveContainerFactory(descriptor), true);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint) {\n\t\tregisterEndpoint(endpoint, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint endpoint,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> containerFactory) {\n\n\t\t\tthis.endpoint = endpoint;\n\t\t\tthis.containerFactory = containerFactory;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "a779b536d020ff643c815615a70b06b0104e8f001b32402d51322cdc86c7e93b", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "invert-conditions", "level": 6, "line_count": 183, "local_path": "expressions/invert-conditions/I06__spring-framework__JmsListenerEndpointRegistrar__89aad944.java", "order": 6, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-e74d89aad944-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1141, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-65dd64a064f9-I07", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t/**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */\n\tpublic void setEndpointRegistry(@Nullable JmsListenerEndpointRegistry endpointRegistry) {\nif (((0x1456 ^ 0x1456) != 0)) { throw new AssertionError(); }\n\n\t\tthis.endpointRegistry = endpointRegistry;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */\n\tpublic @Nullable JmsListenerEndpointRegistry getEndpointRegistry() {\nif (((0x9CF7 ^ 0x9CF7) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void setMessageHandlerMethodFactory(@Nullable MessageHandlerMethodFactory messageHandlerMethodFactory) {\nif (((0x7E2C ^ 0x7E2C) != 0)) { throw new AssertionError(); }\n\n\t\tthis.messageHandlerMethodFactory = messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory getMessageHandlerMethodFactory() {\nif (((0xB91B ^ 0xB91B) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void setContainerFactory(JmsListenerContainerFactory<?> containerFactory) {\nif (((0x45B4 ^ 0x45B4) != 0)) { throw new AssertionError(); }\n\n\t\tthis.containerFactory = containerFactory;\n\t}\n\n\t/**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */\n\tpublic void setContainerFactoryBeanName(String containerFactoryBeanName) {\nif (((0x7143 ^ 0x7143) != 0)) { throw new AssertionError(); }\n\n\t\tthis.containerFactoryBeanName = containerFactoryBeanName;\n\t}\n\n\t/**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void setBeanFactory(BeanFactory beanFactory) {\nif (((0xBF9B ^ 0xBF9B) != 0)) { throw new AssertionError(); }\n\n\t\tthis.beanFactory = beanFactory;\n\t}\n\n\n\t@Override\n\tpublic void afterPropertiesSet() {\nif (((0xD051 ^ 0xD051) != 0)) { throw new AssertionError(); }\n\n\t\tregisterAllEndpoints();\n\t}\n\n\tprotected void registerAllEndpoints() {\nif (((0x769A ^ 0x769A) != 0)) { throw new AssertionError(); }\n\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor descriptor : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer(\n\t\t\t\t\tdescriptor.endpoint, resolveContainerFactory(descriptor));\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> resolveContainerFactory(JmsListenerEndpointDescriptor descriptor) {\nif (((0x7D44 ^ 0x7D44) != 0)) { throw new AssertionError(); }\n\n\t\tif (descriptor.containerFactory != null) {\n\t\t\treturn descriptor.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tdescriptor.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint, @Nullable JmsListenerContainerFactory<?> factory) {\nif (((0x5DF6 ^ 0x5DF6) != 0)) { throw new AssertionError(); }\n\n\t\tAssert.notNull(endpoint, \"Endpoint must not be null\");\n\t\tAssert.hasText(endpoint.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor descriptor = new JmsListenerEndpointDescriptor(endpoint, factory);\n\n\t\tif (this.startImmediately) {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(descriptor.endpoint,\n\t\t\t\t\tresolveContainerFactory(descriptor), true);\n\t\t}\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(descriptor);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint) {\nif (((0x81DA ^ 0x81DA) != 0)) { throw new AssertionError(); }\n\n\t\tregisterEndpoint(endpoint, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint endpoint,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> containerFactory) {\nif (((0x81F4 ^ 0x81F4) != 0)) { throw new AssertionError(); }\n\n\n\t\t\tthis.endpoint = endpoint;\n\t\t\tthis.containerFactory = containerFactory;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "8e98affaa0fd586ca674fd229bba0dc9b0b6aaeab932400b604fb47b7b3bbc92", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "insert-dead-branches", "level": 7, "line_count": 211, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__JmsListenerEndpointRegistrar__64a064f9.java", "order": 7, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 13}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-65dd64a064f9-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1142, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-360fec0d275e-I08", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t/**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */\n\tpublic void setEndpointRegistry(@Nullable JmsListenerEndpointRegistry endpointRegistry) {\n\t\tthis.endpointRegistry = endpointRegistry;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */\n\tpublic @Nullable JmsListenerEndpointRegistry getEndpointRegistry() {\n\t\treturn this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void setMessageHandlerMethodFactory(@Nullable MessageHandlerMethodFactory messageHandlerMethodFactory) {\n\t\tthis.messageHandlerMethodFactory = messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory getMessageHandlerMethodFactory() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void setContainerFactory(JmsListenerContainerFactory<?> containerFactory) {\n\t\tthis.containerFactory = containerFactory;\n\t}\n\n\t/**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */\n\tpublic void setContainerFactoryBeanName(String containerFactoryBeanName) {\n\t\tthis.containerFactoryBeanName = containerFactoryBeanName;\n\t}\n\n\t/**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void setBeanFactory(BeanFactory beanFactory) {\n\t\tthis.beanFactory = beanFactory;\n\t}\n\n\n\t@Override\n\tpublic void afterPropertiesSet() {\n\t\tregisterAllEndpoints();\n\t}\n\n\tprotected void registerAllEndpoints() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor descriptor : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer(\n\t\t\t\t\tdescriptor.endpoint, resolveContainerFactory(descriptor));\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> resolveContainerFactory(JmsListenerEndpointDescriptor descriptor) {\n\t\tif (descriptor.containerFactory != null) {\n\t\t\treturn descriptor.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tdescriptor.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint, @Nullable JmsListenerContainerFactory<?> factory) {\n\t\tAssert.notNull(endpoint, \"Endpoint must not be null\");\n\t\tAssert.hasText(endpoint.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor descriptor = new JmsListenerEndpointDescriptor(endpoint, factory);\n\n\t\tif (this.startImmediately) {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(descriptor.endpoint,\n\t\t\t\t\tresolveContainerFactory(descriptor), true);\n\t\t}\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(descriptor);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint) {\n\t\tregisterEndpoint(endpoint, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint endpoint,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> containerFactory) {\n{\n  int evenNumberCount = 0;\n  for (int candidateNumber = 0; candidateNumber < 6; candidateNumber++) {\n    if (candidateNumber % 2 == 0) {\n      evenNumberCount++;\n    }\n  }\n}\n\n\n\t\t\tthis.endpoint = endpoint;\n\t\t\tthis.containerFactory = containerFactory;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "e2861d63814169eae9e34afaf07b383f755b3969b3d2aa4f533e5a980bcf0dce", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 194, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__JmsListenerEndpointRegistrar__ec0d275e.java", "order": 8, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 2}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-360fec0d275e-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1143, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fee55d540629-I09", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t/**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */\n\tpublic void setEndpointRegistry(@Nullable JmsListenerEndpointRegistry endpointRegistry) {\n\t\tthis.endpointRegistry = endpointRegistry;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */\n\tpublic @Nullable JmsListenerEndpointRegistry getEndpointRegistry() {\n\t\treturn this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void setMessageHandlerMethodFactory(@Nullable MessageHandlerMethodFactory messageHandlerMethodFactory) {\n\t\tthis.messageHandlerMethodFactory = messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory getMessageHandlerMethodFactory() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void setContainerFactory(JmsListenerContainerFactory<?> containerFactory) {\n\t\tthis.containerFactory = containerFactory;\n\t}\n\n\t/**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */\n\tpublic void setContainerFactoryBeanName(String containerFactoryBeanName) {\n\t\tthis.containerFactoryBeanName = containerFactoryBeanName;\n\t}\n\n\t/**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void setBeanFactory(BeanFactory beanFactory) {\n\t\tthis.beanFactory = beanFactory;\n\t}\n\n\n\t@Override\n\tpublic void afterPropertiesSet() {\n{int lI0O_7b6bf9e7=0x6602;boolean lI0O_b2a1a242=true;do{lI0O_7b6bf9e7^=0x6602;lI0O_b2a1a242=false;}while(lI0O_b2a1a242);}\n\n\t\tregisterAllEndpoints();\n\t}\n\n\tprotected void registerAllEndpoints() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor descriptor : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer(\n\t\t\t\t\tdescriptor.endpoint, resolveContainerFactory(descriptor));\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> resolveContainerFactory(JmsListenerEndpointDescriptor descriptor) {\n\t\tif (descriptor.containerFactory != null) {\n\t\t\treturn descriptor.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tdescriptor.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint, @Nullable JmsListenerContainerFactory<?> factory) {\n\t\tAssert.notNull(endpoint, \"Endpoint must not be null\");\n\t\tAssert.hasText(endpoint.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor descriptor = new JmsListenerEndpointDescriptor(endpoint, factory);\n\n\t\tif (this.startImmediately) {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(descriptor.endpoint,\n\t\t\t\t\tresolveContainerFactory(descriptor), true);\n\t\t}\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(descriptor);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint) {\n\t\tregisterEndpoint(endpoint, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint endpoint,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> containerFactory) {\n\n\t\t\tthis.endpoint = endpoint;\n\t\t\tthis.containerFactory = containerFactory;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "769b8a58e1186436d1993131971aada8e500fd924d05a175508eb912918153b8", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 187, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__JmsListenerEndpointRegistrar__5d540629.java", "order": 9, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 7}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-fee55d540629-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1144, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9ead56ffff6d-I10", "source": "package org.springframework.jms.config; import java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean; import org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory; import org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry; private @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory; private @Nullable JmsListenerContainerFactory<?> containerFactory; private @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory; private final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>(); private boolean startImmediately; /**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */ public void setEndpointRegistry(@Nullable JmsListenerEndpointRegistry endpointRegistry) { this.endpointRegistry = endpointRegistry;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */ public @Nullable JmsListenerEndpointRegistry getEndpointRegistry() { return this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void setMessageHandlerMethodFactory(@Nullable MessageHandlerMethodFactory messageHandlerMethodFactory) { this.messageHandlerMethodFactory = messageHandlerMethodFactory;\n\t} /**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory getMessageHandlerMethodFactory() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void setContainerFactory(JmsListenerContainerFactory<?> containerFactory) { this.containerFactory = containerFactory; } /**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */ public void setContainerFactoryBeanName(String containerFactoryBeanName) { this.containerFactoryBeanName = containerFactoryBeanName;\n\t} /**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void setBeanFactory(BeanFactory beanFactory) { this.beanFactory = beanFactory; }\n\n\n\t@Override public void afterPropertiesSet() { registerAllEndpoints();\n\t}\n\n\tprotected void registerAllEndpoints() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor descriptor : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer( descriptor.endpoint, resolveContainerFactory(descriptor));\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> resolveContainerFactory(JmsListenerEndpointDescriptor descriptor) {\n\t\tif (descriptor.containerFactory != null) { return descriptor.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory; }\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory; } else { throw new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" + descriptor.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t} /**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint, @Nullable JmsListenerContainerFactory<?> factory) {\n\t\tAssert.notNull(endpoint, \"Endpoint must not be null\");\n\t\tAssert.hasText(endpoint.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor descriptor = new JmsListenerEndpointDescriptor(endpoint, factory);\n\n\t\tif (this.startImmediately) {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\"); this.endpointRegistry.registerListenerContainer(descriptor.endpoint,\n\t\t\t\t\tresolveContainerFactory(descriptor), true); }\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(descriptor);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */ public void registerEndpoint(JmsListenerEndpoint endpoint) { registerEndpoint(endpoint, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor { public final JmsListenerEndpoint endpoint; public final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint endpoint, @Nullable JmsListenerContainerFactory<?> containerFactory) {\n\n\t\t\tthis.endpoint = endpoint; this.containerFactory = containerFactory;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "716a76ed689540fdab698b395fac3b9b20519beb5d80877dcd47372928a4b785", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "partially-compact-layout", "level": 10, "line_count": 131, "local_path": "layout/partially-compact-layout/I10__spring-framework__JmsListenerEndpointRegistrar__56ffff6d.java", "order": 10, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 104, "line_break_groups_removed": 41, "line_breaks_removed": 54, "whitespace_characters_removed": 84}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-9ead56ffff6d-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1145, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-400ead167844-I11", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t/**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */\n\tpublic void setEndpointRegistry(@Nullable JmsListenerEndpointRegistry endpointRegistry) {\n\t\tthis.endpointRegistry = endpointRegistry;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */\n\tpublic @Nullable JmsListenerEndpointRegistry getEndpointRegistry() {\n\t\treturn this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void setMessageHandlerMethodFactory(@Nullable MessageHandlerMethodFactory messageHandlerMethodFactory) {\n\t\tthis.messageHandlerMethodFactory = messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory getMessageHandlerMethodFactory() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void setContainerFactory(JmsListenerContainerFactory<?> containerFactory) {\n\t\tthis.containerFactory = containerFactory;\n\t}\n\n\t/**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */\n\tpublic void setContainerFactoryBeanName(String containerFactoryBeanName) {\n\t\tthis.containerFactoryBeanName = containerFactoryBeanName;\n\t}\n\n\t/**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void setBeanFactory(BeanFactory beanFactory) {\n\t\tthis.beanFactory = beanFactory;\n\t}\n\n\n\t@Override\n\tpublic void afterPropertiesSet() {\n\t\tregisterAllEndpoints();\n\t}\n\n\tprotected void registerAllEndpoints() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor descriptor : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer(\n\t\t\t\t\tdescriptor.endpoint, resolveContainerFactory(descriptor));\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> resolveContainerFactory(JmsListenerEndpointDescriptor descriptor) {\n\t\tif (descriptor.containerFactory != null) {\n\t\t\treturn descriptor.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tdescriptor.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint, @Nullable JmsListenerContainerFactory<?> factory) {\n\t\tAssert.notNull(endpoint, \"Endpoint must not be null\");\n\t\tAssert.hasText(endpoint.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor descriptor = new JmsListenerEndpointDescriptor(endpoint, factory);\n\n\t\tif (this.startImmediately) {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(descriptor.endpoint,\n\t\t\t\t\tresolveContainerFactory(descriptor), true);\n\t\t}\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(descriptor);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint) {\n\t\tregisterEndpoint(endpoint, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint endpoint,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> containerFactory) {\n\n\t\t\tthis.endpoint = endpoint;\n\t\t\tthis.containerFactory = containerFactory;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 185, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__JmsListenerEndpointRegistrar__ad167844.java", "order": 11, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-400ead167844-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1146, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8f10810af5a8-I12", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t/**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */\n\tpublic void setEndpointRegistry(@Nullable JmsListenerEndpointRegistry endpointRegistry) {\n\t\tthis.endpointRegistry = endpointRegistry;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */\n\tpublic @Nullable JmsListenerEndpointRegistry getEndpointRegistry() {\n\t\treturn this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void setMessageHandlerMethodFactory(@Nullable MessageHandlerMethodFactory messageHandlerMethodFactory) {\n\t\tthis.messageHandlerMethodFactory = messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory getMessageHandlerMethodFactory() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void setContainerFactory(JmsListenerContainerFactory<?> containerFactory) {\n\t\tthis.containerFactory = containerFactory;\n\t}\n\n\t/**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */\n\tpublic void setContainerFactoryBeanName(String containerFactoryBeanName) {\n\t\tthis.containerFactoryBeanName = containerFactoryBeanName;\n\t}\n\n\t/**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void setBeanFactory(BeanFactory beanFactory) {\n\t\tthis.beanFactory = beanFactory;\n\t}\n\n\n\t@Override\n\tpublic void afterPropertiesSet() {\n\t\tregisterAllEndpoints();\n\t}\n\n\tprotected void registerAllEndpoints() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\tfor (JmsListenerEndpointDescriptor descriptor : this.endpointDescriptors) {\n\t\t\tthis.endpointRegistry.registerListenerContainer(\n\t\t\t\t\tdescriptor.endpoint, resolveContainerFactory(descriptor));\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> resolveContainerFactory(JmsListenerEndpointDescriptor descriptor) {\n\t\tif (descriptor.containerFactory != null) {\n\t\t\treturn descriptor.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tdescriptor.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint, @Nullable JmsListenerContainerFactory<?> factory) {\n\t\tAssert.notNull(endpoint, \"Endpoint must not be null\");\n\t\tAssert.hasText(endpoint.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor descriptor = new JmsListenerEndpointDescriptor(endpoint, factory);\n\n\t\tif (this.startImmediately) {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(descriptor.endpoint,\n\t\t\t\t\tresolveContainerFactory(descriptor), true);\n\t\t}\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(descriptor);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint) {\n\t\tregisterEndpoint(endpoint, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint endpoint,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> containerFactory) {\n\n\t\t\tthis.endpoint = endpoint;\n\t\t\tthis.containerFactory = containerFactory;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 185, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__JmsListenerEndpointRegistrar__810af5a8.java", "order": 12, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-8f10810af5a8-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1147, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-03eb33121728-I13", "source": "package org.springframework.jms.config;\nimport java.util.ArrayList;\nimport java.util.List;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.factory.BeanFactory;\nimport org.springframework.beans.factory.BeanFactoryAware;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory;\nimport org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory;\nimport org.springframework.util.Assert;\n\n/**\n * Helper bean for registering {@link JmsListenerEndpoint} with a {@link JmsListenerEndpointRegistry}.\n *\n * @author Stephane Nicoll\n * @author Juergen Hoeller\n * @since 4.1\n * @see org.springframework.jms.annotation.JmsListenerConfigurer\n */\npublic class JmsListenerEndpointRegistrar implements BeanFactoryAware, InitializingBean {\n\n\tprivate @Nullable JmsListenerEndpointRegistry endpointRegistry;\n\n\tprivate @Nullable MessageHandlerMethodFactory messageHandlerMethodFactory;\n\n\tprivate @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\tprivate @Nullable String containerFactoryBeanName;\n\n\tprivate @Nullable BeanFactory beanFactory;\n\n\tprivate final List<JmsListenerEndpointDescriptor> endpointDescriptors = new ArrayList<>();\n\n\tprivate boolean startImmediately;\n\n\n\t/**\n\t * Set the {@link JmsListenerEndpointRegistry} instance to use.\n\t */\n\tpublic void setEndpointRegistry(@Nullable JmsListenerEndpointRegistry endpointRegistry) {\n\t\tthis.endpointRegistry = endpointRegistry;\n\t}\n\n\t/**\n\t * Return the {@link JmsListenerEndpointRegistry} instance for this\n\t * registrar, may be {@code null}.\n\t */\n\tpublic @Nullable JmsListenerEndpointRegistry getEndpointRegistry() {\n\t\treturn this.endpointRegistry;\n\t}\n\n\t/**\n\t * Set the {@link MessageHandlerMethodFactory} to use to configure the message\n\t * listener responsible to serve an endpoint detected by this processor.\n\t * <p>By default, {@link DefaultMessageHandlerMethodFactory} is used and it\n\t * can be configured further to support additional method arguments\n\t * or to customize conversion and validation support. See\n\t * {@link DefaultMessageHandlerMethodFactory} javadoc for more details.\n\t */\n\tpublic void setMessageHandlerMethodFactory(@Nullable MessageHandlerMethodFactory messageHandlerMethodFactory) {\n\t\tthis.messageHandlerMethodFactory = messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Return the custom {@link MessageHandlerMethodFactory} to use, if any.\n\t */\n\tpublic @Nullable MessageHandlerMethodFactory getMessageHandlerMethodFactory() {\n\t\treturn this.messageHandlerMethodFactory;\n\t}\n\n\t/**\n\t * Set the {@link JmsListenerContainerFactory} to use in case a {@link JmsListenerEndpoint}\n\t * is registered with a {@code null} container factory.\n\t * <p>Alternatively, the bean name of the {@link JmsListenerContainerFactory} to use\n\t * can be specified for a lazy lookup, see {@link #setContainerFactoryBeanName}.\n\t */\n\tpublic void setContainerFactory(JmsListenerContainerFactory<?> containerFactory) {\n\t\tthis.containerFactory = containerFactory;\n\t}\n\n\t/**\n\t * Set the bean name of the {@link JmsListenerContainerFactory} to use in case\n\t * a {@link JmsListenerEndpoint} is registered with a {@code null} container factory.\n\t * Alternatively, the container factory instance can be registered directly:\n\t * see {@link #setContainerFactory(JmsListenerContainerFactory)}.\n\t * @see #setBeanFactory\n\t */\n\tpublic void setContainerFactoryBeanName(String containerFactoryBeanName) {\n\t\tthis.containerFactoryBeanName = containerFactoryBeanName;\n\t}\n\n\t/**\n\t * A {@link BeanFactory} only needs to be available in conjunction with\n\t * {@link #setContainerFactoryBeanName}.\n\t */\n\t@Override\n\tpublic void setBeanFactory(BeanFactory beanFactory) {\n\t\tthis.beanFactory = beanFactory;\n\t}\n\n\n\t@Override\n\tpublic void afterPropertiesSet() {\n\t\tregisterAllEndpoints();\n\t}\n\n\tprotected void registerAllEndpoints() {\n\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t{\n\t\t  java.util.Iterator<?> loopIterator = (this.endpointDescriptors).iterator();\n\t\t  while (loopIterator.hasNext()) {\n\t\t    JmsListenerEndpointDescriptor descriptor = (JmsListenerEndpointDescriptor) loopIterator.next();\n\t\t    this.endpointRegistry.registerListenerContainer(\n\t\t    \t\tdescriptor.endpoint, resolveContainerFactory(descriptor));\n\t\t  }\n\t\t}\n\t\tthis.startImmediately = true;  // trigger immediate startup\n\t}\n\n\tprivate JmsListenerContainerFactory<?> resolveContainerFactory(JmsListenerEndpointDescriptor descriptor) {\n\t\tif (descriptor.containerFactory != null) {\n\t\t\treturn descriptor.containerFactory;\n\t\t}\n\t\telse if (this.containerFactory != null) {\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse if (this.containerFactoryBeanName != null) {\n\t\t\tAssert.state(this.beanFactory != null, \"BeanFactory must be set to obtain container factory by bean name\");\n\t\t\t// Consider changing this if live change of the factory is required...\n\t\t\tthis.containerFactory = this.beanFactory.getBean(\n\t\t\t\t\tthis.containerFactoryBeanName, JmsListenerContainerFactory.class);\n\t\t\treturn this.containerFactory;\n\t\t}\n\t\telse {\n\t\t\tthrow new IllegalStateException(\"Could not resolve the \" +\n\t\t\t\t\tJmsListenerContainerFactory.class.getSimpleName() + \" to use for [\" +\n\t\t\t\t\tdescriptor.endpoint + \"] no factory was given and no default is set.\");\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} alongside the\n\t * {@link JmsListenerContainerFactory} to use to create the underlying container.\n\t * <p>The {@code factory} may be {@code null} if the default factory should be\n\t * used for the supplied endpoint.\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint, @Nullable JmsListenerContainerFactory<?> factory) {\n\t\tAssert.notNull(endpoint, \"Endpoint must not be null\");\n\t\tAssert.hasText(endpoint.getId(), \"Endpoint id must be set\");\n\n\t\t// Factory may be null, we defer the resolution right before actually creating the container\n\t\tJmsListenerEndpointDescriptor descriptor = new JmsListenerEndpointDescriptor(endpoint, factory);\n\n\t\tif (this.startImmediately) {  // register and start immediately\n\t\t\tAssert.state(this.endpointRegistry != null, \"No JmsListenerEndpointRegistry set\");\n\t\t\tthis.endpointRegistry.registerListenerContainer(descriptor.endpoint,\n\t\t\t\t\tresolveContainerFactory(descriptor), true);\n\t\t}\n\t\telse {\n\t\t\tthis.endpointDescriptors.add(descriptor);\n\t\t}\n\t}\n\n\t/**\n\t * Register a new {@link JmsListenerEndpoint} using the default\n\t * {@link JmsListenerContainerFactory} to create the underlying container.\n\t * @see #setContainerFactory(JmsListenerContainerFactory)\n\t * @see #registerEndpoint(JmsListenerEndpoint, JmsListenerContainerFactory)\n\t */\n\tpublic void registerEndpoint(JmsListenerEndpoint endpoint) {\n\t\tregisterEndpoint(endpoint, null);\n\t}\n\n\n\tprivate static class JmsListenerEndpointDescriptor {\n\n\t\tpublic final JmsListenerEndpoint endpoint;\n\n\t\tpublic final @Nullable JmsListenerContainerFactory<?> containerFactory;\n\n\t\tpublic JmsListenerEndpointDescriptor(JmsListenerEndpoint endpoint,\n\t\t\t\t@Nullable JmsListenerContainerFactory<?> containerFactory) {\n\n\t\t\tthis.endpoint = endpoint;\n\t\t\tthis.containerFactory = containerFactory;\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__JmsListenerEndpointRegistrar__7be051ed.java", "base_sample_id": "source-68fdd5c8a19045a5", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "9afc219115524f3600b9017e27a6a62ee6f0d77fd0e01d83f8498d752e58ea34", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java", "interference": "lower-for-to-while", "level": 13, "line_count": 189, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__JmsListenerEndpointRegistrar__33121728.java", "order": 13, "original_content_sha256": "345ff8115fac152123d4de80b3156eafbaab6ceee7f741411d41804356bf5b73", "parent_variant_id": "int-228f7be051ed-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistrar.java#L31-L204", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 1, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "JmsListenerEndpointRegistrar", "variant_id": "int-03eb33121728-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1148, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-beef024260f6-SRC", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n/**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String msg, Throwable cause) {\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> persistentClass, Object identifier) {\n\t\tthis(persistentClass, identifier,\n\t\t\t\t\"Object of class [\" + persistentClass.getName() + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> persistentClass, @Nullable Object identifier, String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClass;\n\t\tthis.identifier = identifier;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(String persistentClassName, Object identifier) {\n\t\tthis(persistentClassName, identifier,\n\t\t\t\t\"Object of class [\" + persistentClassName + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString persistentClassName, @Nullable Object identifier, @Nullable String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClassName;\n\t\tthis.identifier = identifier;\n\t}\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> getPersistentClass() {\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t/**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String getPersistentClassName() {\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object getIdentifier() {\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": null, "level": 0, "line_count": 115, "local_path": "source-original/SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "order": 0, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-beef024260f6-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1261, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d1e78074e6fd-I01", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n\n\n\n\n\n\n\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t\n\n\n\n\n\n\tpublic ObjectRetrievalFailureException(@Nullable String msg, Throwable cause) {\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t\n\n\n\n\n\n\tpublic ObjectRetrievalFailureException(Class<?> persistentClass, Object identifier) {\n\t\tthis(persistentClass, identifier,\n\t\t\t\t\"Object of class [\" + persistentClass.getName() + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t\n\n\n\n\n\n\n\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> persistentClass, @Nullable Object identifier, String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClass;\n\t\tthis.identifier = identifier;\n\t}\n\n\t\n\n\n\n\n\n\tpublic ObjectRetrievalFailureException(String persistentClassName, Object identifier) {\n\t\tthis(persistentClassName, identifier,\n\t\t\t\t\"Object of class [\" + persistentClassName + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t\n\n\n\n\n\n\n\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString persistentClassName, @Nullable Object identifier, @Nullable String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClassName;\n\t\tthis.identifier = identifier;\n\t}\n\n\n\t\n\n\n\n\tpublic @Nullable Class<?> getPersistentClass() {\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t\n\n\n\n\tpublic @Nullable String getPersistentClassName() {\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t\n\n\n\tpublic @Nullable Object getIdentifier() {\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "49ca55359a04e2e9052746faef698ea1a07e7c4202622f3b910b9d1b6c564b3e", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "remove-comments", "level": 1, "line_count": 115, "local_path": "comments/remove-comments/I01__spring-framework__ObjectRetrievalFailureException__8074e6fd.java", "order": 1, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1887, "comments_removed": 9}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-d1e78074e6fd-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1262, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-aed9da41bf3c-I02", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n/**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String msg, Throwable cau) {\n\t\tsuper(msg, cau);\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> persistent, Object ide) {\n\t\tthis(persistent, ide,\n\t\t\t\t\"Object of class [\" + persistent.getName() + \"] with identifier [\" + ide + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> persistent2, @Nullable Object ide2, String msg, @Nullable Throwable cau2) {\n\n\t\tsuper(msg, cau2);\n\t\tthis.persistentClass = persistent2;\n\t\tthis.identifier = ide2;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(String persistent3, Object ide3) {\n\t\tthis(persistent3, ide3,\n\t\t\t\t\"Object of class [\" + persistent3 + \"] with identifier [\" + ide3 + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString persistent4, @Nullable Object ide4, @Nullable String msg, @Nullable Throwable cau3) {\n\n\t\tsuper(msg, cau3);\n\t\tthis.persistentClass = persistent4;\n\t\tthis.identifier = ide4;\n\t}\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> get() {\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t/**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String get2() {\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object get3() {\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "a4a6229559f62ab10328333d4920863424339c93bb4891dc7d15a17403039ebd", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "shorten-identifiers", "level": 2, "line_count": 115, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__ObjectRetrievalFailureException__da41bf3c.java", "order": 2, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 18, "identifiers_declared": 14, "local_name_collisions_avoided": 8, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 2, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-aed9da41bf3c-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1263, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9c1e81169d90-I03", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n/**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String age, Throwable count) {\n\t\tsuper(age, count);\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> currentAccount, Object preference) {\n\t\tthis(currentAccount, preference,\n\t\t\t\t\"Object of class [\" + currentAccount.getName() + \"] with identifier [\" + preference + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> currentSession, @Nullable Object nextClient, String map, @Nullable Throwable index) {\n\n\t\tsuper(map, index);\n\t\tthis.persistentClass = currentSession;\n\t\tthis.identifier = nextClient;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(String currentAddress, Object remoteUser) {\n\t\tthis(currentAddress, remoteUser,\n\t\t\t\t\"Object of class [\" + currentAddress + \"] with identifier [\" + remoteUser + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString currentBalance, @Nullable Object localBatch, @Nullable String key, @Nullable Throwable token) {\n\n\t\tsuper(key, token);\n\t\tthis.persistentClass = currentBalance;\n\t\tthis.identifier = localBatch;\n\t}\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> validateRequest() {\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t/**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String validateBalance() {\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object validateScore() {\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "83aa7b5e3e83d152d3f090e2281b13bce3867083efa4e184f04083f2bd7d5b44", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "mislead-identifiers", "level": 3, "line_count": 115, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__ObjectRetrievalFailureException__81169d90.java", "order": 3, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 18, "identifiers_declared": 14, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 2, "local_exact_length_matches": 10, "local_random_pool_selections": 14, "local_total_length_difference": 12, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 1, "method_declarations_renamed": 3, "method_exact_length_matches": 1, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 10}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-9c1e81169d90-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1264, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c6348af810ea-I04", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n/**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String a, Throwable b) {\n\t\tsuper(a, b);\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> c, Object d) {\n\t\tthis(c, d,\n\t\t\t\t\"Object of class [\" + c.getName() + \"] with identifier [\" + d + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> e, @Nullable Object f, String g, @Nullable Throwable h) {\n\n\t\tsuper(g, h);\n\t\tthis.persistentClass = e;\n\t\tthis.identifier = f;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(String i, Object j) {\n\t\tthis(i, j,\n\t\t\t\t\"Object of class [\" + i + \"] with identifier [\" + j + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString k, @Nullable Object l, @Nullable String m, @Nullable Throwable n) {\n\n\t\tsuper(m, n);\n\t\tthis.persistentClass = k;\n\t\tthis.identifier = l;\n\t}\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> a() {\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t/**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String b() {\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object c() {\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "cb71e1eb8ec63b4ef6bfcdac04eeaebb9e514524fee78d2b4130d6adeb386c8e", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "garble-identifiers", "level": 4, "line_count": 115, "local_path": "identifiers/garble-identifiers/I04__spring-framework__ObjectRetrievalFailureException__8af810ea.java", "order": 4, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 18, "identifiers_declared": 14, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-c6348af810ea-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1265, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7658667ea790-I05", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n/**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String msg, Throwable cause) {\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> persistentClass, Object identifier) {\n\t\tthis(persistentClass, identifier,\n\t\t\t\t\"Object of class [\" + persistentClass.getName() + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> persistentClass, @Nullable Object identifier, String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClass;\n\t\tthis.identifier = identifier;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(String persistentClassName, Object identifier) {\n\t\tthis(persistentClassName, identifier,\n\t\t\t\t\"Object of class [\" + persistentClassName + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString persistentClassName, @Nullable Object identifier, @Nullable String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClassName;\n\t\tthis.identifier = identifier;\n\t}\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> getPersistentClass() {\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t/**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String getPersistentClassName() {\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object getIdentifier() {\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "encode-integer-literals", "level": 5, "line_count": 115, "local_path": "expressions/encode-integer-literals/I05__spring-framework__ObjectRetrievalFailureException__667ea790.java", "order": 5, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-7658667ea790-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1266, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-150ab3369af7-I06", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n/**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String msg, Throwable cause) {\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> persistentClass, Object identifier) {\n\t\tthis(persistentClass, identifier,\n\t\t\t\t\"Object of class [\" + persistentClass.getName() + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> persistentClass, @Nullable Object identifier, String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClass;\n\t\tthis.identifier = identifier;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(String persistentClassName, Object identifier) {\n\t\tthis(persistentClassName, identifier,\n\t\t\t\t\"Object of class [\" + persistentClassName + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString persistentClassName, @Nullable Object identifier, @Nullable String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClassName;\n\t\tthis.identifier = identifier;\n\t}\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> getPersistentClass() {\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t/**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String getPersistentClassName() {\n\t\tif (!((this.persistentClass instanceof Class<?> clazz))) {} else {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object getIdentifier() {\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "258a728e1e91c4b06249947c0668d55766e472663a0699989e969abbdb5d2ffa", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "invert-conditions", "level": 6, "line_count": 115, "local_path": "expressions/invert-conditions/I06__spring-framework__ObjectRetrievalFailureException__b3369af7.java", "order": 6, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 1}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-150ab3369af7-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1267, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fb5c8d44b057-I07", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n/**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String msg, Throwable cause) {\n\t\tsuper(msg, cause);\nif (((0xAC8 ^ 0xAC8) != 0)) { throw new AssertionError(); }\n\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> persistentClass, Object identifier) {\n\t\tthis(persistentClass, identifier,\n\t\t\t\t\"Object of class [\" + persistentClass.getName() + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\nif (((0xD56C ^ 0xD56C) != 0)) { throw new AssertionError(); }\n\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> persistentClass, @Nullable Object identifier, String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\nif (((0xAFA3 ^ 0xAFA3) != 0)) { throw new AssertionError(); }\n\n\t\tthis.persistentClass = persistentClass;\n\t\tthis.identifier = identifier;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(String persistentClassName, Object identifier) {\n\t\tthis(persistentClassName, identifier,\n\t\t\t\t\"Object of class [\" + persistentClassName + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\nif (((0x5B9D ^ 0x5B9D) != 0)) { throw new AssertionError(); }\n\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString persistentClassName, @Nullable Object identifier, @Nullable String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\nif (((0x8C49 ^ 0x8C49) != 0)) { throw new AssertionError(); }\n\n\t\tthis.persistentClass = persistentClassName;\n\t\tthis.identifier = identifier;\n\t}\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> getPersistentClass() {\nif (((0xBAF3 ^ 0xBAF3) != 0)) { throw new AssertionError(); }\n\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t/**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String getPersistentClassName() {\nif (((0x7138 ^ 0x7138) != 0)) { throw new AssertionError(); }\n\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object getIdentifier() {\nif (((0x89B5 ^ 0x89B5) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b7f502466acbdcd27b5c6930a28a98f58e1dfe7ad4f1a368256e035fc79c87ef", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "insert-dead-branches", "level": 7, "line_count": 131, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__ObjectRetrievalFailureException__8d44b057.java", "order": 7, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 8}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-fb5c8d44b057-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1268, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4b95f2996fa1-I08", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n/**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String msg, Throwable cause) {\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> persistentClass, Object identifier) {\n\t\tthis(persistentClass, identifier,\n\t\t\t\t\"Object of class [\" + persistentClass.getName() + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> persistentClass, @Nullable Object identifier, String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClass;\n\t\tthis.identifier = identifier;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(String persistentClassName, Object identifier) {\n\t\tthis(persistentClassName, identifier,\n\t\t\t\t\"Object of class [\" + persistentClassName + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString persistentClassName, @Nullable Object identifier, @Nullable String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClassName;\n\t\tthis.identifier = identifier;\n\t}\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> getPersistentClass() {\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t/**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String getPersistentClassName() {\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object getIdentifier() {\n{\n  int morningTemperature = 18;\n  int eveningTemperature = 14;\n  int lowerTemperature = morningTemperature;\n  if (eveningTemperature < lowerTemperature) {\n    lowerTemperature = eveningTemperature;\n  }\n}\n\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "69bcb2334963a9f75fb649101b34c4fd5f96fd033ba947cab9a843af26e3af93", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 124, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__ObjectRetrievalFailureException__f2996fa1.java", "order": 8, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 4}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-4b95f2996fa1-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1269, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fa7e57709b41-I09", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n/**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String msg, Throwable cause) {\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> persistentClass, Object identifier) {\n\t\tthis(persistentClass, identifier,\n\t\t\t\t\"Object of class [\" + persistentClass.getName() + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> persistentClass, @Nullable Object identifier, String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClass;\n\t\tthis.identifier = identifier;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(String persistentClassName, Object identifier) {\n\t\tthis(persistentClassName, identifier,\n\t\t\t\t\"Object of class [\" + persistentClassName + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString persistentClassName, @Nullable Object identifier, @Nullable String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClassName;\n\t\tthis.identifier = identifier;\n\t}\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> getPersistentClass() {\n{int lI0O_73274fc3=0xA8BC,lI0O_7add02da=~lI0O_73274fc3;lI0O_73274fc3=(lI0O_73274fc3&lI0O_7add02da)|(lI0O_73274fc3^lI0O_73274fc3);lI0O_7add02da^=lI0O_7add02da;}\n\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t/**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String getPersistentClassName() {\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object getIdentifier() {\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "58d79210337f4e1b1dcc5a8b9054b69a4bf8a9078312047abdea430707970a26", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 117, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__ObjectRetrievalFailureException__57709b41.java", "order": 9, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 9}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-fa7e57709b41-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1270, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-19bf4592592e-I10", "source": "package org.springframework.orm; import org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException; /**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */ @SuppressWarnings(\"serial\") public class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass; private final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String msg, Throwable cause) {\n\t\tsuper(msg, cause); this.persistentClass = null; this.identifier = null; } /**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> persistentClass, Object identifier) {\n\t\tthis(persistentClass, identifier,\n\t\t\t\t\"Object of class [\" + persistentClass.getName() + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */ public ObjectRetrievalFailureException( Class<?> persistentClass, @Nullable Object identifier, String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClass; this.identifier = identifier; }\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */ public ObjectRetrievalFailureException(String persistentClassName, Object identifier) {\n\t\tthis(persistentClassName, identifier, \"Object of class [\" + persistentClassName + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException( String persistentClassName, @Nullable Object identifier, @Nullable String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClassName; this.identifier = identifier; }\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> getPersistentClass() {\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t} /**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String getPersistentClassName() {\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t} return (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object getIdentifier() { return this.identifier; }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "bdded2f7fda564fb6ec049840dd0c5754df873dbb6ac8379a82e472607f5e23c", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "partially-compact-layout", "level": 10, "line_count": 89, "local_path": "layout/partially-compact-layout/I10__spring-framework__ObjectRetrievalFailureException__4592592e.java", "order": 10, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 55, "line_break_groups_removed": 22, "line_breaks_removed": 26, "whitespace_characters_removed": 35}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-19bf4592592e-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1271, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a2a09193c42f-I11", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n/**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String msg, Throwable cause) {\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> persistentClass, Object identifier) {\n\t\tthis(persistentClass, identifier,\n\t\t\t\t\"Object of class [\" + persistentClass.getName() + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> persistentClass, @Nullable Object identifier, String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClass;\n\t\tthis.identifier = identifier;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(String persistentClassName, Object identifier) {\n\t\tthis(persistentClassName, identifier,\n\t\t\t\t\"Object of class [\" + persistentClassName + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString persistentClassName, @Nullable Object identifier, @Nullable String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClassName;\n\t\tthis.identifier = identifier;\n\t}\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> getPersistentClass() {\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t/**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String getPersistentClassName() {\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object getIdentifier() {\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 115, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__ObjectRetrievalFailureException__9193c42f.java", "order": 11, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-a2a09193c42f-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1272, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-709b897f9757-I12", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n/**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String msg, Throwable cause) {\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> persistentClass, Object identifier) {\n\t\tthis(persistentClass, identifier,\n\t\t\t\t\"Object of class [\" + persistentClass.getName() + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> persistentClass, @Nullable Object identifier, String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClass;\n\t\tthis.identifier = identifier;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(String persistentClassName, Object identifier) {\n\t\tthis(persistentClassName, identifier,\n\t\t\t\t\"Object of class [\" + persistentClassName + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString persistentClassName, @Nullable Object identifier, @Nullable String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClassName;\n\t\tthis.identifier = identifier;\n\t}\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> getPersistentClass() {\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t/**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String getPersistentClassName() {\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object getIdentifier() {\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 115, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__ObjectRetrievalFailureException__897f9757.java", "order": 12, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-709b897f9757-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1273, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d8430d76a7d2-I13", "source": "package org.springframework.orm;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.dao.DataRetrievalFailureException;\n\n/**\n * Exception thrown if a mapped object could not be retrieved via its identifier.\n * Provides information about the persistent class and the identifier.\n *\n * @author Juergen Hoeller\n * @since 13.10.2003\n */\n@SuppressWarnings(\"serial\")\npublic class ObjectRetrievalFailureException extends DataRetrievalFailureException {\n\n\tprivate final @Nullable Object persistentClass;\n\n\tprivate final @Nullable Object identifier;\n\n\n\t/**\n\t * Create a general ObjectRetrievalFailureException with the given message,\n\t * without any information on the affected object.\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(@Nullable String msg, Throwable cause) {\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = null;\n\t\tthis.identifier = null;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(Class<?> persistentClass, Object identifier) {\n\t\tthis(persistentClass, identifier,\n\t\t\t\t\"Object of class [\" + persistentClass.getName() + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClass the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tClass<?> persistentClass, @Nullable Object identifier, String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClass;\n\t\tthis.identifier = identifier;\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the default \"not found\" message.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t */\n\tpublic ObjectRetrievalFailureException(String persistentClassName, Object identifier) {\n\t\tthis(persistentClassName, identifier,\n\t\t\t\t\"Object of class [\" + persistentClassName + \"] with identifier [\" + identifier + \"]: not found\",\n\t\t\t\tnull);\n\t}\n\n\t/**\n\t * Create a new ObjectRetrievalFailureException for the given object,\n\t * with the given explicit message and exception.\n\t * @param persistentClassName the name of the persistent class\n\t * @param identifier the ID of the object that should have been retrieved\n\t * @param msg the detail message\n\t * @param cause the source exception\n\t */\n\tpublic ObjectRetrievalFailureException(\n\t\t\tString persistentClassName, @Nullable Object identifier, @Nullable String msg, @Nullable Throwable cause) {\n\n\t\tsuper(msg, cause);\n\t\tthis.persistentClass = persistentClassName;\n\t\tthis.identifier = identifier;\n\t}\n\n\n\t/**\n\t * Return the persistent class of the object that was not found.\n\t * If no Class was specified, this method returns null.\n\t */\n\tpublic @Nullable Class<?> getPersistentClass() {\n\t\treturn (this.persistentClass instanceof Class<?> clazz ? clazz : null);\n\t}\n\n\t/**\n\t * Return the name of the persistent class of the object that was not found.\n\t * Will work for both Class objects and String names.\n\t */\n\tpublic @Nullable String getPersistentClassName() {\n\t\tif (this.persistentClass instanceof Class<?> clazz) {\n\t\t\treturn clazz.getName();\n\t\t}\n\t\treturn (this.persistentClass != null ? this.persistentClass.toString() : null);\n\t}\n\n\t/**\n\t * Return the identifier of the object that was not found.\n\t */\n\tpublic @Nullable Object getIdentifier() {\n\t\treturn this.identifier;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__ObjectRetrievalFailureException__024260f6.java", "base_sample_id": "source-ad0bedfdccbc2d3c", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java", "interference": "lower-for-to-while", "level": 13, "line_count": 115, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__ObjectRetrievalFailureException__0d76a7d2.java", "order": 13, "original_content_sha256": "0481588b69e71d9eab8ca16bd55df875ba502ca54ac7c775ec901886dcfbd300", "parent_variant_id": "int-beef024260f6-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-orm/src/main/java/org/springframework/orm/ObjectRetrievalFailureException.java#L23-L133", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ObjectRetrievalFailureException", "variant_id": "int-d8430d76a7d2-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1274, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-55eee861f683-SRC", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n/**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest request, @Nullable ServletResponse response) {\n\t\tthis.request = (HttpServletRequest) request;\n\t\tthis.response = (HttpServletResponse) response;\n\t}\n\n\n\tpublic void addDispatchHandler(Runnable handler) {\n\t\tAssert.notNull(handler, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(handler);\n\t\t\t}\n\t\t\telse {\n\t\t\t\thandler.run();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest getRequest() {\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse getResponse() {\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean hasOriginalRequestAndResponse() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void dispatch() {\n\t\tdispatch(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void dispatch(String path) {\n\t\tdispatch(null, path);\n\t}\n\n\t@Override\n\tpublic void dispatch(@Nullable ServletContext context, String path) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = path;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String getDispatchedPath() {\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void complete() {\n\t\tMockHttpServletRequest mockRequest = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (mockRequest != null) {\n\t\t\tmockRequest.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener listener : this.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException ex) {\n\t\t\t\tthrow new IllegalStateException(\"AsyncListener failure\", ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void start(Runnable runnable) {\n\t\trunnable.run();\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener, ServletRequest request, ServletResponse response) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\tpublic List<AsyncListener> getListeners() {\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException {\n\t\treturn BeanUtils.instantiateClass(clazz);\n\t}\n\n\t/**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override\n\tpublic void setTimeout(long timeout) {\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getTimeout() {\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": null, "level": 0, "line_count": 156, "local_path": "source-original/SRC__spring-framework__MockAsyncContext__e861f683.java", "order": 0, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-55eee861f683-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1233, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-19a87fac74ca-I01", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n\n\n\n\n\n\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest request, @Nullable ServletResponse response) {\n\t\tthis.request = (HttpServletRequest) request;\n\t\tthis.response = (HttpServletResponse) response;\n\t}\n\n\n\tpublic void addDispatchHandler(Runnable handler) {\n\t\tAssert.notNull(handler, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(handler);\n\t\t\t}\n\t\t\telse {\n\t\t\t\thandler.run();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest getRequest() {\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse getResponse() {\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean hasOriginalRequestAndResponse() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void dispatch() {\n\t\tdispatch(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void dispatch(String path) {\n\t\tdispatch(null, path);\n\t}\n\n\t@Override\n\tpublic void dispatch(@Nullable ServletContext context, String path) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = path;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String getDispatchedPath() {\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void complete() {\n\t\tMockHttpServletRequest mockRequest = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (mockRequest != null) {\n\t\t\tmockRequest.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener listener : this.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException ex) {\n\t\t\t\tthrow new IllegalStateException(\"AsyncListener failure\", ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void start(Runnable runnable) {\n\t\trunnable.run();\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener, ServletRequest request, ServletResponse response) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\tpublic List<AsyncListener> getListeners() {\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException {\n\t\treturn BeanUtils.instantiateClass(clazz);\n\t}\n\n\t\n\n\n\n\n\n\n\n\n\n\n\t@Override\n\tpublic void setTimeout(long timeout) {\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getTimeout() {\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "6a7a5df3855b7a4e816f14f8f28afc8110c1868587cd049f4fc89b599b20031f", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "remove-comments", "level": 1, "line_count": 156, "local_path": "comments/remove-comments/I01__spring-framework__MockAsyncContext__7fac74ca.java", "order": 1, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 690, "comments_removed": 2}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-19a87fac74ca-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1234, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-145ae8c34e4c-I02", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n/**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest req, @Nullable ServletResponse res) {\n\t\tthis.request = (HttpServletRequest) req;\n\t\tthis.response = (HttpServletResponse) res;\n\t}\n\n\n\tpublic void add(Runnable han) {\n\t\tAssert.notNull(han, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(han);\n\t\t\t}\n\t\t\telse {\n\t\t\t\than.run();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest get() {\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse get2() {\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean has() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void dis() {\n\t\tdis(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void dis(String pat) {\n\t\tdis(null, pat);\n\t}\n\n\t@Override\n\tpublic void dis(@Nullable ServletContext con, String pat2) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = pat2;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String get3() {\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void com() {\n\t\tMockHttpServletRequest mock2 = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (mock2 != null) {\n\t\t\tmock2.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener lis : this.listeners) {\n\t\t\ttry {\n\t\t\t\tlis.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException ex) {\n\t\t\t\tthrow new IllegalStateException(\"AsyncListener failure\", ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void sta(Runnable run2) {\n\t\trun2.run();\n\t}\n\n\t@Override\n\tpublic void add2(AsyncListener lis2) {\n\t\tthis.listeners.add(lis2);\n\t}\n\n\t@Override\n\tpublic void add2(AsyncListener lis3, ServletRequest req2, ServletResponse res2) {\n\t\tthis.listeners.add(lis3);\n\t}\n\n\tpublic List<AsyncListener> get4() {\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T create(Class<T> cla) throws ServletException {\n\t\treturn BeanUtils.instantiateClass(cla);\n\t}\n\n\t/**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override\n\tpublic void set(long tim) {\n\t\tthis.timeout = tim;\n\t}\n\n\t@Override\n\tpublic long get5() {\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "5206afb8cd2f97406c56698c62025ab8208b2213095a24b1291ae148dc41934b", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "shorten-identifiers", "level": 2, "line_count": 156, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__MockAsyncContext__e8c34e4c.java", "order": 2, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 16, "identifiers_declared": 16, "local_name_collisions_avoided": 7, "method_calls_renamed": 2, "method_declarations_renamed": 16, "method_name_collisions_avoided": 5, "method_name_groups": 13}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-145ae8c34e4c-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1235, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-866a778541a0-I03", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n/**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest message, @Nullable ServletResponse shipment) {\n\t\tthis.request = (HttpServletRequest) message;\n\t\tthis.response = (HttpServletResponse) shipment;\n\t}\n\n\n\tpublic void validateAccount(Runnable version) {\n\t\tAssert.notNull(version, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(version);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tversion.run();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest createData() {\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse findMessage() {\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean validateBalance() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void loadPath() {\n\t\tloadPath(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void loadPath(String user) {\n\t\tloadPath(null, user);\n\t}\n\n\t@Override\n\tpublic void loadPath(@Nullable ServletContext history, String step) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = step;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String validateRequest() {\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void sendMode() {\n\t\tMockHttpServletRequest activeCache = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (activeCache != null) {\n\t\t\tactiveCache.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener localKey : this.listeners) {\n\t\t\ttry {\n\t\t\t\tlocalKey.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException map) {\n\t\t\t\tthrow new IllegalStateException(\"AsyncListener failure\", map);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void route(Runnable schedule) {\n\t\tschedule.run();\n\t}\n\n\t@Override\n\tpublic void createOrder(AsyncListener nextNode) {\n\t\tthis.listeners.add(nextNode);\n\t}\n\n\t@Override\n\tpublic void createOrder(AsyncListener nextMode, ServletRequest payload, ServletResponse duration) {\n\t\tthis.listeners.add(nextMode);\n\t}\n\n\tpublic List<AsyncListener> parseRequest() {\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T validateClient(Class<T> count) throws ServletException {\n\t\treturn BeanUtils.instantiateClass(count);\n\t}\n\n\t/**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override\n\tpublic void findWindow(long request) {\n\t\tthis.timeout = request;\n\t}\n\n\t@Override\n\tpublic long checkCount() {\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7703fe2f9a2c2f3539d029e6b0e7a718141a3a5b18ccd6f6188cbdf690926d92", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "mislead-identifiers", "level": 3, "line_count": 156, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__MockAsyncContext__778541a0.java", "order": 3, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 16, "identifiers_declared": 16, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 2, "local_exact_length_matches": 15, "local_random_pool_selections": 16, "local_total_length_difference": 1, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 2, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 1, "method_declarations_renamed": 16, "method_exact_length_matches": 10, "method_name_groups": 13, "method_random_pool_selections": 13, "method_total_length_difference": 19}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-866a778541a0-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1236, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2fb8d03acba2-I04", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n/**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest a, @Nullable ServletResponse b) {\n\t\tthis.request = (HttpServletRequest) a;\n\t\tthis.response = (HttpServletResponse) b;\n\t}\n\n\n\tpublic void a(Runnable c) {\n\t\tAssert.notNull(c, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(c);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tc.run();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest b() {\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse c() {\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean d() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void e() {\n\t\te(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void e(String d) {\n\t\te(null, d);\n\t}\n\n\t@Override\n\tpublic void e(@Nullable ServletContext e, String f) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = f;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String f() {\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void g() {\n\t\tMockHttpServletRequest g = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (g != null) {\n\t\t\tg.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener h : this.listeners) {\n\t\t\ttry {\n\t\t\t\th.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException i) {\n\t\t\t\tthrow new IllegalStateException(\"AsyncListener failure\", i);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void h(Runnable j) {\n\t\tj.run();\n\t}\n\n\t@Override\n\tpublic void i(AsyncListener k) {\n\t\tthis.listeners.add(k);\n\t}\n\n\t@Override\n\tpublic void i(AsyncListener l, ServletRequest m, ServletResponse n) {\n\t\tthis.listeners.add(l);\n\t}\n\n\tpublic List<AsyncListener> j() {\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T k(Class<T> o) throws ServletException {\n\t\treturn BeanUtils.instantiateClass(o);\n\t}\n\n\t/**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override\n\tpublic void l(long p) {\n\t\tthis.timeout = p;\n\t}\n\n\t@Override\n\tpublic long m() {\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "43d13d7bd7dea8bfa6eaa2d9bc01787493b51210f0854852f6e0e643e4bbfa93", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "garble-identifiers", "level": 4, "line_count": 156, "local_path": "identifiers/garble-identifiers/I04__spring-framework__MockAsyncContext__d03acba2.java", "order": 4, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 16, "identifiers_declared": 16, "local_name_collisions_avoided": 0, "method_calls_renamed": 2, "method_declarations_renamed": 16, "method_name_collisions_avoided": 0, "method_name_groups": 13}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-2fb8d03acba2-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1237, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9a1ef64e65b9-I05", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n/**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 0xa * 0x3e8L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest request, @Nullable ServletResponse response) {\n\t\tthis.request = (HttpServletRequest) request;\n\t\tthis.response = (HttpServletResponse) response;\n\t}\n\n\n\tpublic void addDispatchHandler(Runnable handler) {\n\t\tAssert.notNull(handler, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(handler);\n\t\t\t}\n\t\t\telse {\n\t\t\t\thandler.run();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest getRequest() {\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse getResponse() {\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean hasOriginalRequestAndResponse() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void dispatch() {\n\t\tdispatch(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void dispatch(String path) {\n\t\tdispatch(null, path);\n\t}\n\n\t@Override\n\tpublic void dispatch(@Nullable ServletContext context, String path) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = path;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String getDispatchedPath() {\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void complete() {\n\t\tMockHttpServletRequest mockRequest = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (mockRequest != null) {\n\t\t\tmockRequest.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener listener : this.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException ex) {\n\t\t\t\tthrow new IllegalStateException(\"AsyncListener failure\", ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void start(Runnable runnable) {\n\t\trunnable.run();\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener, ServletRequest request, ServletResponse response) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\tpublic List<AsyncListener> getListeners() {\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException {\n\t\treturn BeanUtils.instantiateClass(clazz);\n\t}\n\n\t/**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override\n\tpublic void setTimeout(long timeout) {\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getTimeout() {\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5ce77ae1a4675b9395b31293f537a40e02e98d52f619f6b298d449ed02cfc587", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "encode-integer-literals", "level": 5, "line_count": 156, "local_path": "expressions/encode-integer-literals/I05__spring-framework__MockAsyncContext__f64e65b9.java", "order": 5, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 2}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-9a1ef64e65b9-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1238, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eb7ac1a48477-I06", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n/**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest request, @Nullable ServletResponse response) {\n\t\tthis.request = (HttpServletRequest) request;\n\t\tthis.response = (HttpServletResponse) response;\n\t}\n\n\n\tpublic void addDispatchHandler(Runnable handler) {\n\t\tAssert.notNull(handler, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (!((this.dispatchedPath == null))) {\n\t\t\t\thandler.run();\n\t\t\t} else {\n\t\t\t\tthis.dispatchHandlers.add(handler);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest getRequest() {\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse getResponse() {\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean hasOriginalRequestAndResponse() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void dispatch() {\n\t\tdispatch(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void dispatch(String path) {\n\t\tdispatch(null, path);\n\t}\n\n\t@Override\n\tpublic void dispatch(@Nullable ServletContext context, String path) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = path;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String getDispatchedPath() {\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void complete() {\n\t\tMockHttpServletRequest mockRequest = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (!((mockRequest != null))) {} else {\n\t\t\tmockRequest.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener listener : this.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException ex) {\n\t\t\t\tthrow new IllegalStateException(\"AsyncListener failure\", ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void start(Runnable runnable) {\n\t\trunnable.run();\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener, ServletRequest request, ServletResponse response) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\tpublic List<AsyncListener> getListeners() {\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException {\n\t\treturn BeanUtils.instantiateClass(clazz);\n\t}\n\n\t/**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override\n\tpublic void setTimeout(long timeout) {\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getTimeout() {\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "32c9e70219a8ef89b746ca6d10ab9c5aace160c7e750d6199ddf9c330504bb21", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "invert-conditions", "level": 6, "line_count": 155, "local_path": "expressions/invert-conditions/I06__spring-framework__MockAsyncContext__c1a48477.java", "order": 6, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-eb7ac1a48477-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1239, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1f92e22cdd13-I07", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n/**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest request, @Nullable ServletResponse response) {\nif (((0x3877 ^ 0x3877) != 0)) { throw new AssertionError(); }\n\n\t\tthis.request = (HttpServletRequest) request;\n\t\tthis.response = (HttpServletResponse) response;\n\t}\n\n\n\tpublic void addDispatchHandler(Runnable handler) {\nif (((0x2C14 ^ 0x2C14) != 0)) { throw new AssertionError(); }\n\n\t\tAssert.notNull(handler, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(handler);\n\t\t\t}\n\t\t\telse {\n\t\t\t\thandler.run();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest getRequest() {\nif (((0xEBAE ^ 0xEBAE) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse getResponse() {\nif (((0xF3B1 ^ 0xF3B1) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean hasOriginalRequestAndResponse() {\nif (((0xDBFD ^ 0xDBFD) != 0)) { throw new AssertionError(); }\n\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void dispatch() {\nif (((0x5220 ^ 0x5220) != 0)) { throw new AssertionError(); }\n\n\t\tdispatch(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void dispatch(String path) {\nif (((0x78B3 ^ 0x78B3) != 0)) { throw new AssertionError(); }\n\n\t\tdispatch(null, path);\n\t}\n\n\t@Override\n\tpublic void dispatch(@Nullable ServletContext context, String path) {\nif (((0xD442 ^ 0xD442) != 0)) { throw new AssertionError(); }\n\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = path;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String getDispatchedPath() {\nif (((0x6EA7 ^ 0x6EA7) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void complete() {\nif (((0x1126 ^ 0x1126) != 0)) { throw new AssertionError(); }\n\n\t\tMockHttpServletRequest mockRequest = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (mockRequest != null) {\n\t\t\tmockRequest.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener listener : this.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException ex) {\n\t\t\t\tthrow new IllegalStateException(\"AsyncListener failure\", ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void start(Runnable runnable) {\nif (((0xF8F7 ^ 0xF8F7) != 0)) { throw new AssertionError(); }\n\n\t\trunnable.run();\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener) {\nif (((0x2227 ^ 0x2227) != 0)) { throw new AssertionError(); }\n\n\t\tthis.listeners.add(listener);\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener, ServletRequest request, ServletResponse response) {\nif (((0x6D98 ^ 0x6D98) != 0)) { throw new AssertionError(); }\n\n\t\tthis.listeners.add(listener);\n\t}\n\n\tpublic List<AsyncListener> getListeners() {\nif (((0x254E ^ 0x254E) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException {\nif (((0xD685 ^ 0xD685) != 0)) { throw new AssertionError(); }\n\n\t\treturn BeanUtils.instantiateClass(clazz);\n\t}\n\n\t/**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override\n\tpublic void setTimeout(long timeout) {\nif (((0x8789 ^ 0x8789) != 0)) { throw new AssertionError(); }\n\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getTimeout() {\nif (((0x1A8B ^ 0x1A8B) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "84045cd4be80ff2e1c2ea3e74f8b53596f8187ede8686a2af5dc462930dfa5a5", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "insert-dead-branches", "level": 7, "line_count": 190, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__MockAsyncContext__e22cdd13.java", "order": 7, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 17}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-1f92e22cdd13-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1240, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1f3d97246d4c-I08", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n/**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest request, @Nullable ServletResponse response) {\n\t\tthis.request = (HttpServletRequest) request;\n\t\tthis.response = (HttpServletResponse) response;\n\t}\n\n\n\tpublic void addDispatchHandler(Runnable handler) {\n{\n  int remainingSteps = 3;\n  while (remainingSteps > 0) {\n    remainingSteps--;\n  }\n}\n\n\t\tAssert.notNull(handler, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(handler);\n\t\t\t}\n\t\t\telse {\n\t\t\t\thandler.run();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest getRequest() {\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse getResponse() {\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean hasOriginalRequestAndResponse() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void dispatch() {\n\t\tdispatch(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void dispatch(String path) {\n\t\tdispatch(null, path);\n\t}\n\n\t@Override\n\tpublic void dispatch(@Nullable ServletContext context, String path) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = path;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String getDispatchedPath() {\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void complete() {\n\t\tMockHttpServletRequest mockRequest = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (mockRequest != null) {\n\t\t\tmockRequest.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener listener : this.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException ex) {\n\t\t\t\tthrow new IllegalStateException(\"AsyncListener failure\", ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void start(Runnable runnable) {\n\t\trunnable.run();\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener, ServletRequest request, ServletResponse response) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\tpublic List<AsyncListener> getListeners() {\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException {\n\t\treturn BeanUtils.instantiateClass(clazz);\n\t}\n\n\t/**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override\n\tpublic void setTimeout(long timeout) {\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getTimeout() {\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "0c729b3ff9211248a658d38045da79423fd8234c86e8b19797b2665e0f0cd82c", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 163, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__MockAsyncContext__97246d4c.java", "order": 8, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 1}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-1f3d97246d4c-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1241, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f75a8ca3af5f-I09", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n/**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest request, @Nullable ServletResponse response) {\n\t\tthis.request = (HttpServletRequest) request;\n\t\tthis.response = (HttpServletResponse) response;\n\t}\n\n\n\tpublic void addDispatchHandler(Runnable handler) {\n\t\tAssert.notNull(handler, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(handler);\n\t\t\t}\n\t\t\telse {\n\t\t\t\thandler.run();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest getRequest() {\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse getResponse() {\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean hasOriginalRequestAndResponse() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void dispatch() {\n\t\tdispatch(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void dispatch(String path) {\n\t\tdispatch(null, path);\n\t}\n\n\t@Override\n\tpublic void dispatch(@Nullable ServletContext context, String path) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = path;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String getDispatchedPath() {\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void complete() {\n{boolean lI0O_944b2723=((0x8E4A^0x8E4A)!=0);lI0O_944b2723=!(!lI0O_944b2723);}\n\n\t\tMockHttpServletRequest mockRequest = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (mockRequest != null) {\n\t\t\tmockRequest.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener listener : this.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException ex) {\n\t\t\t\tthrow new IllegalStateException(\"AsyncListener failure\", ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void start(Runnable runnable) {\n\t\trunnable.run();\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener, ServletRequest request, ServletResponse response) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\tpublic List<AsyncListener> getListeners() {\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException {\n\t\treturn BeanUtils.instantiateClass(clazz);\n\t}\n\n\t/**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override\n\tpublic void setTimeout(long timeout) {\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getTimeout() {\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ef448fded2e62aebe024304546c3f0d32a8fbff3eee0dd4b692cc20a835ccdb6", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 158, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__MockAsyncContext__8ca3af5f.java", "order": 9, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-f75a8ca3af5f-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1242, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-211655843774-I10", "source": "package org.springframework.mock.web;\nimport java.io.IOException; import java.util.ArrayList; import java.util.List; import jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert; import org.springframework.web.util.WebUtils; /**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request; private final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>(); public MockAsyncContext(ServletRequest request, @Nullable ServletResponse response) {\n\t\tthis.request = (HttpServletRequest) request; this.response = (HttpServletResponse) response;\n\t}\n\n\n\tpublic void addDispatchHandler(Runnable handler) { Assert.notNull(handler, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(handler); }\n\t\t\telse { handler.run();\n\t\t\t} } } @Override public ServletRequest getRequest() {\n\t\treturn this.request; } @Override public @Nullable ServletResponse getResponse() { return this.response; }\n\n\t@Override\n\tpublic boolean hasOriginalRequestAndResponse() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse); } @Override public void dispatch() {\n\t\tdispatch(this.request.getRequestURI()); }\n\n\t@Override public void dispatch(String path) {\n\t\tdispatch(null, path);\n\t} @Override\n\tpublic void dispatch(@Nullable ServletContext context, String path) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = path;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t} public @Nullable String getDispatchedPath() { return this.dispatchedPath;\n\t} @Override\n\tpublic void complete() {\n\t\tMockHttpServletRequest mockRequest = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (mockRequest != null) {\n\t\t\tmockRequest.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener listener : this.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException ex) { throw new IllegalStateException(\"AsyncListener failure\", ex);\n\t\t\t}\n\t\t} }\n\n\t@Override\n\tpublic void start(Runnable runnable) {\n\t\trunnable.run();\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener) {\n\t\tthis.listeners.add(listener);\n\t} @Override public void addListener(AsyncListener listener, ServletRequest request, ServletResponse response) {\n\t\tthis.listeners.add(listener);\n\t} public List<AsyncListener> getListeners() {\n\t\treturn this.listeners; } @Override\n\tpublic <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException { return BeanUtils.instantiateClass(clazz); } /**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override public void setTimeout(long timeout) {\n\t\tthis.timeout = timeout; } @Override public long getTimeout() {\n\t\treturn this.timeout;\n\t} }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "2140405e1c3146f8ee5b162a0beef334511fecd4e9e81b392653a8d16b98762c", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "partially-compact-layout", "level": 10, "line_count": 95, "local_path": "layout/partially-compact-layout/I10__spring-framework__MockAsyncContext__55843774.java", "order": 10, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 113, "line_break_groups_removed": 45, "line_breaks_removed": 61, "whitespace_characters_removed": 68}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-211655843774-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1243, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ab31a1d681ef-I11", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n/**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest request, @Nullable ServletResponse response) {\n\t\tthis.request = (HttpServletRequest) request;\n\t\tthis.response = (HttpServletResponse) response;\n\t}\n\n\n\tpublic void addDispatchHandler(Runnable handler) {\n\t\tAssert.notNull(handler, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(handler);\n\t\t\t}\n\t\t\telse {\n\t\t\t\thandler.run();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest getRequest() {\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse getResponse() {\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean hasOriginalRequestAndResponse() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void dispatch() {\n\t\tdispatch(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void dispatch(String path) {\n\t\tdispatch(null, path);\n\t}\n\n\t@Override\n\tpublic void dispatch(@Nullable ServletContext context, String path) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = path;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String getDispatchedPath() {\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void complete() {\n\t\tMockHttpServletRequest mockRequest = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (mockRequest != null) {\n\t\t\tmockRequest.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener listener : this.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException ex) {\n\t\t\t\tthrow new IllegalStateException(\"AsyncListener failure\", ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void start(Runnable runnable) {\n\t\trunnable.run();\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener, ServletRequest request, ServletResponse response) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\tpublic List<AsyncListener> getListeners() {\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException {\n\t\treturn BeanUtils.instantiateClass(clazz);\n\t}\n\n\t/**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override\n\tpublic void setTimeout(long timeout) {\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getTimeout() {\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 156, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__MockAsyncContext__a1d681ef.java", "order": 11, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-ab31a1d681ef-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1244, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e6b7dda05ba0-I12", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n/**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest request, @Nullable ServletResponse response) {\n\t\tthis.request = (HttpServletRequest) request;\n\t\tthis.response = (HttpServletResponse) response;\n\t}\n\n\n\tpublic void addDispatchHandler(Runnable handler) {\n\t\tAssert.notNull(handler, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(handler);\n\t\t\t}\n\t\t\telse {\n\t\t\t\thandler.run();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest getRequest() {\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse getResponse() {\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean hasOriginalRequestAndResponse() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void dispatch() {\n\t\tdispatch(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void dispatch(String path) {\n\t\tdispatch(null, path);\n\t}\n\n\t@Override\n\tpublic void dispatch(@Nullable ServletContext context, String path) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = path;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String getDispatchedPath() {\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void complete() {\n\t\tMockHttpServletRequest mockRequest = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (mockRequest != null) {\n\t\t\tmockRequest.setAsyncStarted(false);\n\t\t}\n\t\tfor (AsyncListener listener : this.listeners) {\n\t\t\ttry {\n\t\t\t\tlistener.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t\t}\n\t\t\tcatch (IOException ex) {\n\t\t\t\tthrow new IllegalStateException(\"AsyncListener failure\", ex);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic void start(Runnable runnable) {\n\t\trunnable.run();\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener, ServletRequest request, ServletResponse response) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\tpublic List<AsyncListener> getListeners() {\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException {\n\t\treturn BeanUtils.instantiateClass(clazz);\n\t}\n\n\t/**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override\n\tpublic void setTimeout(long timeout) {\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getTimeout() {\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 156, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__MockAsyncContext__dda05ba0.java", "order": 12, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-e6b7dda05ba0-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1245, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d2be199aee21-I13", "source": "package org.springframework.mock.web;\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\nimport jakarta.servlet.AsyncContext;\nimport jakarta.servlet.AsyncEvent;\nimport jakarta.servlet.AsyncListener;\nimport jakarta.servlet.ServletContext;\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.ServletRequest;\nimport jakarta.servlet.ServletResponse;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.beans.BeanUtils;\nimport org.springframework.util.Assert;\nimport org.springframework.web.util.WebUtils;\n\n/**\n * Mock implementation of the {@link AsyncContext} interface.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class MockAsyncContext implements AsyncContext {\n\n\tprivate final HttpServletRequest request;\n\n\tprivate final @Nullable HttpServletResponse response;\n\n\tprivate final List<AsyncListener> listeners = new ArrayList<>();\n\n\tprivate @Nullable String dispatchedPath;\n\n\tprivate long timeout = 10 * 1000L;\n\n\tprivate final List<Runnable> dispatchHandlers = new ArrayList<>();\n\n\n\tpublic MockAsyncContext(ServletRequest request, @Nullable ServletResponse response) {\n\t\tthis.request = (HttpServletRequest) request;\n\t\tthis.response = (HttpServletResponse) response;\n\t}\n\n\n\tpublic void addDispatchHandler(Runnable handler) {\n\t\tAssert.notNull(handler, \"Dispatch handler must not be null\");\n\t\tsynchronized (this) {\n\t\t\tif (this.dispatchedPath == null) {\n\t\t\t\tthis.dispatchHandlers.add(handler);\n\t\t\t}\n\t\t\telse {\n\t\t\t\thandler.run();\n\t\t\t}\n\t\t}\n\t}\n\n\t@Override\n\tpublic ServletRequest getRequest() {\n\t\treturn this.request;\n\t}\n\n\t@Override\n\tpublic @Nullable ServletResponse getResponse() {\n\t\treturn this.response;\n\t}\n\n\t@Override\n\tpublic boolean hasOriginalRequestAndResponse() {\n\t\treturn (this.request instanceof MockHttpServletRequest && this.response instanceof MockHttpServletResponse);\n\t}\n\n\t@Override\n\tpublic void dispatch() {\n\t\tdispatch(this.request.getRequestURI());\n\t}\n\n\t@Override\n\tpublic void dispatch(String path) {\n\t\tdispatch(null, path);\n\t}\n\n\t@Override\n\tpublic void dispatch(@Nullable ServletContext context, String path) {\n\t\tsynchronized (this) {\n\t\t\tthis.dispatchedPath = path;\n\t\t\tthis.dispatchHandlers.forEach(Runnable::run);\n\t\t}\n\t}\n\n\tpublic @Nullable String getDispatchedPath() {\n\t\treturn this.dispatchedPath;\n\t}\n\n\t@Override\n\tpublic void complete() {\n\t\tMockHttpServletRequest mockRequest = WebUtils.getNativeRequest(this.request, MockHttpServletRequest.class);\n\t\tif (mockRequest != null) {\n\t\t\tmockRequest.setAsyncStarted(false);\n\t\t}\n\t\t{\n\t\t  java.util.Iterator<?> loopIterator = (this.listeners).iterator();\n\t\t  while (loopIterator.hasNext()) {\n\t\t    AsyncListener listener = (AsyncListener) loopIterator.next();\n\t\t    try {\n\t\t    \tlistener.onComplete(new AsyncEvent(this, this.request, this.response));\n\t\t    }\n\t\t    catch (IOException ex) {\n\t\t    \tthrow new IllegalStateException(\"AsyncListener failure\", ex);\n\t\t    }\n\t\t  }\n\t\t}\n\t}\n\n\t@Override\n\tpublic void start(Runnable runnable) {\n\t\trunnable.run();\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\t@Override\n\tpublic void addListener(AsyncListener listener, ServletRequest request, ServletResponse response) {\n\t\tthis.listeners.add(listener);\n\t}\n\n\tpublic List<AsyncListener> getListeners() {\n\t\treturn this.listeners;\n\t}\n\n\t@Override\n\tpublic <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException {\n\t\treturn BeanUtils.instantiateClass(clazz);\n\t}\n\n\t/**\n\t * By default this is set to 10000 (10 seconds) even though the Servlet API\n\t * specifies a default async request timeout of 30 seconds. Keep in mind the\n\t * timeout could further be impacted by global configuration through the MVC\n\t * Java config or the XML namespace, as well as be overridden per request on\n\t * {@link org.springframework.web.context.request.async.DeferredResult DeferredResult}\n\t * or on\n\t * {@link org.springframework.web.servlet.mvc.method.annotation.SseEmitter SseEmitter}.\n\t * @param timeout the timeout value to use.\n\t * @see AsyncContext#setTimeout(long)\n\t */\n\t@Override\n\tpublic void setTimeout(long timeout) {\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getTimeout() {\n\t\treturn this.timeout;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__MockAsyncContext__e861f683.java", "base_sample_id": "source-95acfd4ca15e69a1", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "96c2a6e55cb05f78d9954cdbecdd1f9dd661e198a82f4500dfb4164613f22b2e", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java", "interference": "lower-for-to-while", "level": 13, "line_count": 160, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__MockAsyncContext__199aee21.java", "order": 13, "original_content_sha256": "49df712f920d5453759cbcc0100603739860ae3348f8032fdf1b10d874b6632d", "parent_variant_id": "int-55eee861f683-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java#L38-L175", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 1, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "MockAsyncContext", "variant_id": "int-d2be199aee21-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1246, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b2033622e73a-SRC", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": null, "level": 0, "line_count": 45, "local_path": "source-original/SRC__spring-framework__Timed__3622e73a.java", "order": 0, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "original", "transformation_stats": {}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-b2033622e73a-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1359, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2ed925af62bb-I01", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t\n\n\n\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "46e0682550729829efa3b4a50d13ff1125cdbbcb4eb2409c837ca9bb019a6910", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "remove-comments", "level": 1, "line_count": 45, "local_path": "comments/remove-comments/I01__spring-framework__Timed__25af62bb.java", "order": 1, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1225, "comments_removed": 2}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-2ed925af62bb-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1360, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-02c0eaab7cf8-I02", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "shorten-identifiers", "level": 2, "line_count": 45, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__Timed__eaab7cf8.java", "order": 2, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 0, "method_name_collisions_avoided": 0, "method_name_groups": 0}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-02c0eaab7cf8-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1361, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6a008ecaacbd-I03", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "mislead-identifiers", "level": 3, "line_count": 45, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__Timed__8ecaacbd.java", "order": 3, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 0, "local_random_pool_selections": 0, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 0, "method_exact_length_matches": 0, "method_name_groups": 0, "method_random_pool_selections": 0, "method_total_length_difference": 0}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-6a008ecaacbd-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1362, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b24637b7e2a9-I04", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "garble-identifiers", "level": 4, "line_count": 45, "local_path": "identifiers/garble-identifiers/I04__spring-framework__Timed__37b7e2a9.java", "order": 4, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 0, "method_name_collisions_avoided": 0, "method_name_groups": 0}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-b24637b7e2a9-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1363, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7fe0777ff69e-I05", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "encode-integer-literals", "level": 5, "line_count": 45, "local_path": "expressions/encode-integer-literals/I05__spring-framework__Timed__777ff69e.java", "order": 5, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-7fe0777ff69e-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1364, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-92e5c59c69fb-I06", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "invert-conditions", "level": 6, "line_count": 45, "local_path": "expressions/invert-conditions/I06__spring-framework__Timed__c59c69fb.java", "order": 6, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-92e5c59c69fb-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1365, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4a5d5b04e6df-I07", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "insert-dead-branches", "level": 7, "line_count": 45, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__Timed__5b04e6df.java", "order": 7, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-4a5d5b04e6df-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1366, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-644283ed17ba-I08", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 45, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__Timed__83ed17ba.java", "order": 8, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-644283ed17ba-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1367, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dc8cd675ef36-I09", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 45, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__Timed__d675ef36.java", "order": 9, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-dc8cd675ef36-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1368, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-58f3993d5ea4-I10", "source": "package org.springframework.test.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "17a0a0f2986833793358939e6570b82239cfb8115f4af1d2f5c915a10aaddd06", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "partially-compact-layout", "level": 10, "line_count": 39, "local_path": "layout/partially-compact-layout/I10__spring-framework__Timed__993d5ea4.java", "order": 10, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 14, "line_break_groups_removed": 5, "line_breaks_removed": 6, "whitespace_characters_removed": 1}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-58f3993d5ea4-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1369, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-19b93a9de007-I11", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 45, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__Timed__3a9de007.java", "order": 11, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-19b93a9de007-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1370, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7ff38d46a57c-I12", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 45, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__Timed__8d46a57c.java", "order": 12, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-7ff38d46a57c-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1371, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ebdaab422ddb-I13", "source": "package org.springframework.test.annotation;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Test annotation for use with JUnit 4 to indicate that a test method has to finish\n * execution in a {@linkplain #millis() specified time period}.\n *\n * <p>If the test execution takes longer than the specified time period, then\n * the test is considered to have failed.\n *\n * <p>Note that the time period includes execution of the test method itself,\n * any {@linkplain Repeat repetitions} of the test, and any <em>set up</em> or\n * <em>tear down</em> of the test fixture.\n *\n * <p>This annotation may be used as a <em>meta-annotation</em> to create custom\n * <em>composed annotations</em>.\n *\n * @author Rod Johnson\n * @author Sam Brannen\n * @since 2.0\n * @see org.springframework.test.annotation.Repeat\n * @see org.springframework.test.context.junit4.SpringJUnit4ClassRunner\n * @see org.springframework.test.context.junit4.rules.SpringMethodRule\n * @see org.springframework.test.context.junit4.statements.SpringFailOnTimeout\n * @deprecated since Spring Framework 7.0 in favor of the\n * {@link org.springframework.test.context.junit.jupiter.SpringExtension SpringExtension}\n * and JUnit Jupiter\n */\n@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\n@Deprecated(since = \"7.0\")\npublic @interface Timed {\n\n\t/**\n\t * The maximum amount of time (in milliseconds) that a test execution can\n\t * take without being marked as failed due to taking too long.\n\t */\n\tlong millis();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__Timed__3622e73a.java", "base_sample_id": "source-e88ae369240f14d4", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/annotation/Timed.java", "interference": "lower-for-to-while", "level": 13, "line_count": 45, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__Timed__ab422ddb.java", "order": 13, "original_content_sha256": "258dc96c10c3599065f47ea73f473574ce158b858d5fc64d84d3ca4f0e0cf6e0", "parent_variant_id": "int-b2033622e73a-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/annotation/Timed.java#L25-L62", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "annotation_type", "unit_name": "Timed", "variant_id": "int-ebdaab422ddb-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1372, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b2ff2774c44b-SRC", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */\n\tClass<?> getTestClass();\n\n\t/**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate getCacheAwareContextLoaderDelegate();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": null, "level": 0, "line_count": 27, "local_path": "source-original/SRC__spring-framework__BootstrapContext__2774c44b.java", "order": 0, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-b2ff2774c44b-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1079, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a5ddf10530d7-I01", "source": "package org.springframework.test.context;\n\n\n\n\n\n\n\n\n\n\npublic interface BootstrapContext {\n\n\t\n\n\n\n\tClass<?> getTestClass();\n\n\t\n\n\n\n\n\tCacheAwareContextLoaderDelegate getCacheAwareContextLoaderDelegate();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "78b7de5b9394155ea92ceba7f0d52244ea54c882d1f0f4dd1684b095f6cf0ad2", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "remove-comments", "level": 1, "line_count": 27, "local_path": "comments/remove-comments/I01__spring-framework__BootstrapContext__f10530d7.java", "order": 1, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 527, "comments_removed": 3}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-a5ddf10530d7-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1080, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-14bb88a7c4ec-I02", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */\n\tClass<?> get();\n\n\t/**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate get2();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "1b920250444e4adbb14d0190e0ea31e1c7de72d74421cb4a08c100eee0c4e271", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "shorten-identifiers", "level": 2, "line_count": 27, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__BootstrapContext__88a7c4ec.java", "order": 2, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 1, "method_name_groups": 2}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-14bb88a7c4ec-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1081, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ca46f4d6263c-I03", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */\n\tClass<?> removeBuffer();\n\n\t/**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate validateRequest();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "ec9855f0e250e34de83f18f203a15d15338b448da78a689a9b5a6c660ac480c2", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "mislead-identifiers", "level": 3, "line_count": 27, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__BootstrapContext__f4d6263c.java", "order": 3, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 0, "local_random_pool_selections": 0, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 1, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 19}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-ca46f4d6263c-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1082, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5b16332a45fe-I04", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */\n\tClass<?> a();\n\n\t/**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate b();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "675ceac900ba96c903007feb6c9876e3c8573993d2e179cd520a9addc6288a57", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "garble-identifiers", "level": 4, "line_count": 27, "local_path": "identifiers/garble-identifiers/I04__spring-framework__BootstrapContext__332a45fe.java", "order": 4, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 0, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-5b16332a45fe-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1083, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-684c351766b6-I05", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */\n\tClass<?> getTestClass();\n\n\t/**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate getCacheAwareContextLoaderDelegate();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "encode-integer-literals", "level": 5, "line_count": 27, "local_path": "expressions/encode-integer-literals/I05__spring-framework__BootstrapContext__351766b6.java", "order": 5, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-684c351766b6-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1084, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a953eb5d629c-I06", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */\n\tClass<?> getTestClass();\n\n\t/**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate getCacheAwareContextLoaderDelegate();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "invert-conditions", "level": 6, "line_count": 27, "local_path": "expressions/invert-conditions/I06__spring-framework__BootstrapContext__eb5d629c.java", "order": 6, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-a953eb5d629c-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1085, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-79da9d1d42b4-I07", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */\n\tClass<?> getTestClass();\n\n\t/**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate getCacheAwareContextLoaderDelegate();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "insert-dead-branches", "level": 7, "line_count": 27, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__BootstrapContext__9d1d42b4.java", "order": 7, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-79da9d1d42b4-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1086, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3db64d3686b5-I08", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */\n\tClass<?> getTestClass();\n\n\t/**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate getCacheAwareContextLoaderDelegate();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 27, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__BootstrapContext__4d3686b5.java", "order": 8, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-3db64d3686b5-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1087, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dbc3a3fa7c94-I09", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */\n\tClass<?> getTestClass();\n\n\t/**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate getCacheAwareContextLoaderDelegate();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 27, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__BootstrapContext__a3fa7c94.java", "order": 9, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-dbc3a3fa7c94-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1088, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5f637e1a4ef1-I10", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */ Class<?> getTestClass(); /**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate getCacheAwareContextLoaderDelegate();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "109eb87c9c763c8a0fdc2fd120ab1ad05f158c24a90004c5061d72af75ac04cf", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "partially-compact-layout", "level": 10, "line_count": 24, "local_path": "layout/partially-compact-layout/I10__spring-framework__BootstrapContext__7e1a4ef1.java", "order": 10, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 7, "line_break_groups_removed": 2, "line_breaks_removed": 3, "whitespace_characters_removed": 3}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-5f637e1a4ef1-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1089, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4898e9dff7bc-I11", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */\n\tClass<?> getTestClass();\n\n\t/**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate getCacheAwareContextLoaderDelegate();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 27, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__BootstrapContext__e9dff7bc.java", "order": 11, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-4898e9dff7bc-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1090, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-69418ca3b8d5-I12", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */\n\tClass<?> getTestClass();\n\n\t/**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate getCacheAwareContextLoaderDelegate();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 27, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__BootstrapContext__8ca3b8d5.java", "order": 12, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-69418ca3b8d5-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1091, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d5469be2b97b-I13", "source": "package org.springframework.test.context;\n\n/**\n * {@code BootstrapContext} encapsulates the context in which the <em>Spring\n * TestContext Framework</em> is bootstrapped.\n *\n * @author Sam Brannen\n * @since 4.1\n * @see BootstrapWith\n * @see TestContextBootstrapper\n */\npublic interface BootstrapContext {\n\n\t/**\n\t * Get the {@linkplain Class test class} for this bootstrap context.\n\t * @return the test class (never {@code null})\n\t */\n\tClass<?> getTestClass();\n\n\t/**\n\t * Get the {@link CacheAwareContextLoaderDelegate} to use for transparent\n\t * interaction with the {@code ContextCache}.\n\t * @return the context loader delegate (never {@code null})\n\t */\n\tCacheAwareContextLoaderDelegate getCacheAwareContextLoaderDelegate();\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__BootstrapContext__2774c44b.java", "base_sample_id": "source-fb4ecf96216ad7b3", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java", "interference": "lower-for-to-while", "level": 13, "line_count": 27, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__BootstrapContext__9be2b97b.java", "order": 13, "original_content_sha256": "5a1cffcfdadbffc498a40f21f00d481c0ee7851b7908e13c0d1b771f9a24ff76", "parent_variant_id": "int-b2ff2774c44b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/BootstrapContext.java#L19-L43", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "BootstrapContext", "variant_id": "int-d5469be2b97b-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1092, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c9f3bb6b6dc3-SRC", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler createHandler(Annotation overrideAnnotation, Class<?> testClass, Field field) {\n\t\tif (!(overrideAnnotation instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), field.getDeclaringClass().getName(), field.getName()));\n\t\t}\n\n\t\tString beanName = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString methodName = testBean.methodName();\n\t\tBeanOverrideStrategy strategy = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod factoryMethod;\n\t\tif (!methodName.isBlank()) {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), methodName);\n\t\t}\n\t\telse {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> candidateMethodNames = new ArrayList<>();\n\t\t\tcandidateMethodNames.add(field.getName());\n\n\t\t\tif (beanName != null) {\n\t\t\t\tcandidateMethodNames.add(beanName);\n\t\t\t}\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), candidateMethodNames);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tfield, ResolvableType.forField(field, testClass), beanName, testBean.contextName(), strategy, factoryMethod);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, String... methodNames) {\n\t\treturn findTestBeanFactoryMethod(clazz, methodReturnType, List.of(methodNames));\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, Collection<String> methodNames) {\n\t\tAssert.notEmpty(methodNames, \"At least one candidate method name is required\");\n\t\tSet<Method> methods = new LinkedHashSet<>();\n\t\tSet<String> originalNames = new LinkedHashSet<>(methodNames);\n\n\t\t// Process fully-qualified method names first.\n\t\tfor (String methodName : methodNames) {\n\t\t\tint indexOfHash = methodName.lastIndexOf('#');\n\t\t\tif (indexOfHash != -1) {\n\t\t\t\tString className = methodName.substring(0, indexOfHash).trim();\n\t\t\t\tAssert.hasText(className, () -> \"No class name present in fully-qualified method name: \" + methodName);\n\t\t\t\tString methodNameToUse = methodName.substring(indexOfHash + 1).trim();\n\t\t\t\tAssert.hasText(methodNameToUse, () -> \"No method name present in fully-qualified method name: \" + methodName);\n\t\t\t\tClass<?> declaringClass;\n\t\t\t\ttry {\n\t\t\t\t\tdeclaringClass = ClassUtils.forName(className, getClass().getClassLoader());\n\t\t\t\t}\n\t\t\t\tcatch (ClassNotFoundException | LinkageError ex) {\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\t\"Failed to load class for fully-qualified method name: \" + methodName, ex);\n\t\t\t\t}\n\t\t\t\tMethod externalMethod = ReflectionUtils.findMethod(declaringClass, methodNameToUse);\n\t\t\t\tAssert.state(externalMethod != null && Modifier.isStatic(externalMethod.getModifiers()) &&\n\t\t\t\t\t\tmethodReturnType.isAssignableFrom(externalMethod.getReturnType()), () ->\n\t\t\t\t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tmethodNameToUse, className, methodReturnType.getName()));\n\t\t\t\tmethods.add(externalMethod);\n\t\t\t\toriginalNames.remove(methodName);\n\t\t\t}\n\t\t}\n\n\t\tSet<String> supportedNames = new LinkedHashSet<>(originalNames);\n\t\tMethodFilter methodFilter = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tsupportedNames.contains(method.getName()) &&\n\t\t\t\tmethodReturnType.isAssignableFrom(method.getReturnType()));\n\t\tfindMethods(methods, clazz, methodFilter);\n\n\t\tString methodNamesDescription = supportedNames.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!methods.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tmethodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\tlong uniqueMethodNameCount = methods.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(uniqueMethodNameCount == 1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tuniqueMethodNameCount, methodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\treturn methods.iterator().next();\n\t}\n\n\tprivate static Set<Method> findMethods(Set<Method> methods, Class<?> clazz, MethodFilter methodFilter) {\n\t\tmethods.addAll(MethodIntrospector.selectMethods(clazz, methodFilter));\n\t\tif (methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)) {\n\t\t\tfindMethods(methods, clazz.getEnclosingClass(), methodFilter);\n\t\t}\n\t\treturn methods;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": null, "level": 0, "line_count": 159, "local_path": "source-original/SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "order": 0, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-c9f3bb6b6dc3-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1345, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7f6e4d6d6c09-I01", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n\n\n\n\n\n\n\n\n\n\n\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler createHandler(Annotation overrideAnnotation, Class<?> testClass, Field field) {\n\t\tif (!(overrideAnnotation instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), field.getDeclaringClass().getName(), field.getName()));\n\t\t}\n\n\t\tString beanName = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString methodName = testBean.methodName();\n\t\tBeanOverrideStrategy strategy = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod factoryMethod;\n\t\tif (!methodName.isBlank()) {\n\t\t\t \n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), methodName);\n\t\t}\n\t\telse {\n\t\t\t \n\t\t\t \n\t\t\tList<String> candidateMethodNames = new ArrayList<>();\n\t\t\tcandidateMethodNames.add(field.getName());\n\n\t\t\tif (beanName != null) {\n\t\t\t\tcandidateMethodNames.add(beanName);\n\t\t\t}\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), candidateMethodNames);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tfield, ResolvableType.forField(field, testClass), beanName, testBean.contextName(), strategy, factoryMethod);\n\t}\n\n\t\n\n\n\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, String... methodNames) {\n\t\treturn findTestBeanFactoryMethod(clazz, methodReturnType, List.of(methodNames));\n\t}\n\n\t\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, Collection<String> methodNames) {\n\t\tAssert.notEmpty(methodNames, \"At least one candidate method name is required\");\n\t\tSet<Method> methods = new LinkedHashSet<>();\n\t\tSet<String> originalNames = new LinkedHashSet<>(methodNames);\n\n\t\t \n\t\tfor (String methodName : methodNames) {\n\t\t\tint indexOfHash = methodName.lastIndexOf('#');\n\t\t\tif (indexOfHash != -1) {\n\t\t\t\tString className = methodName.substring(0, indexOfHash).trim();\n\t\t\t\tAssert.hasText(className, () -> \"No class name present in fully-qualified method name: \" + methodName);\n\t\t\t\tString methodNameToUse = methodName.substring(indexOfHash + 1).trim();\n\t\t\t\tAssert.hasText(methodNameToUse, () -> \"No method name present in fully-qualified method name: \" + methodName);\n\t\t\t\tClass<?> declaringClass;\n\t\t\t\ttry {\n\t\t\t\t\tdeclaringClass = ClassUtils.forName(className, getClass().getClassLoader());\n\t\t\t\t}\n\t\t\t\tcatch (ClassNotFoundException | LinkageError ex) {\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\t\"Failed to load class for fully-qualified method name: \" + methodName, ex);\n\t\t\t\t}\n\t\t\t\tMethod externalMethod = ReflectionUtils.findMethod(declaringClass, methodNameToUse);\n\t\t\t\tAssert.state(externalMethod != null && Modifier.isStatic(externalMethod.getModifiers()) &&\n\t\t\t\t\t\tmethodReturnType.isAssignableFrom(externalMethod.getReturnType()), () ->\n\t\t\t\t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tmethodNameToUse, className, methodReturnType.getName()));\n\t\t\t\tmethods.add(externalMethod);\n\t\t\t\toriginalNames.remove(methodName);\n\t\t\t}\n\t\t}\n\n\t\tSet<String> supportedNames = new LinkedHashSet<>(originalNames);\n\t\tMethodFilter methodFilter = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tsupportedNames.contains(method.getName()) &&\n\t\t\t\tmethodReturnType.isAssignableFrom(method.getReturnType()));\n\t\tfindMethods(methods, clazz, methodFilter);\n\n\t\tString methodNamesDescription = supportedNames.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!methods.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tmethodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\tlong uniqueMethodNameCount = methods.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(uniqueMethodNameCount == 1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tuniqueMethodNameCount, methodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\treturn methods.iterator().next();\n\t}\n\n\tprivate static Set<Method> findMethods(Set<Method> methods, Class<?> clazz, MethodFilter methodFilter) {\n\t\tmethods.addAll(MethodIntrospector.selectMethods(clazz, methodFilter));\n\t\tif (methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)) {\n\t\t\tfindMethods(methods, clazz.getEnclosingClass(), methodFilter);\n\t\t}\n\t\treturn methods;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "5365c460adaa14d2a59c67108b5b905e4bd8bb8649e800be0d6a81aa39fe1d14", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "remove-comments", "level": 1, "line_count": 159, "local_path": "comments/remove-comments/I01__spring-framework__TestBeanOverrideProcessor__4d6d6c09.java", "order": 1, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1985, "comments_removed": 7}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-7f6e4d6d6c09-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1346, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5ab92647f409-I02", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler create(Annotation override2, Class<?> test2, Field fie) {\n\t\tif (!(override2 instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), fie.getDeclaringClass().getName(), fie.getName()));\n\t\t}\n\n\t\tString bean2 = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString method2 = testBean.methodName();\n\t\tBeanOverrideStrategy str = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod factory;\n\t\tif (!method2.isBlank()) {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tfactory = find(fie.getDeclaringClass(), fie.getType(), method2);\n\t\t}\n\t\telse {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> candidate = new ArrayList<>();\n\t\t\tcandidate.add(fie.getName());\n\n\t\t\tif (bean2 != null) {\n\t\t\t\tcandidate.add(bean2);\n\t\t\t}\n\t\t\tfactory = find(fie.getDeclaringClass(), fie.getType(), candidate);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tfie, ResolvableType.forField(fie, test2), bean2, testBean.contextName(), str, factory);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */\n\tMethod find(Class<?> cla, Class<?> method3, String... method4) {\n\t\treturn find(cla, method3, List.of(method4));\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod find(Class<?> cla2, Class<?> method5, Collection<String> method6) {\n\t\tAssert.notEmpty(method6, \"At least one candidate method name is required\");\n\t\tSet<Method> met = new LinkedHashSet<>();\n\t\tSet<String> original = new LinkedHashSet<>(method6);\n\n\t\t// Process fully-qualified method names first.\n\t\tfor (String method7 : method6) {\n\t\t\tint index = method7.lastIndexOf('#');\n\t\t\tif (index != -1) {\n\t\t\t\tString class2 = method7.substring(0, index).trim();\n\t\t\t\tAssert.hasText(class2, () -> \"No class name present in fully-qualified method name: \" + method7);\n\t\t\t\tString method8 = method7.substring(index + 1).trim();\n\t\t\t\tAssert.hasText(method8, () -> \"No method name present in fully-qualified method name: \" + method7);\n\t\t\t\tClass<?> declaring;\n\t\t\t\ttry {\n\t\t\t\t\tdeclaring = ClassUtils.forName(class2, getClass().getClassLoader());\n\t\t\t\t}\n\t\t\t\tcatch (ClassNotFoundException | LinkageError ex) {\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\t\"Failed to load class for fully-qualified method name: \" + method7, ex);\n\t\t\t\t}\n\t\t\t\tMethod external = ReflectionUtils.findMethod(declaring, method8);\n\t\t\t\tAssert.state(external != null && Modifier.isStatic(external.getModifiers()) &&\n\t\t\t\t\t\tmethod5.isAssignableFrom(external.getReturnType()), () ->\n\t\t\t\t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tmethod8, class2, method5.getName()));\n\t\t\t\tmet.add(external);\n\t\t\t\toriginal.remove(method7);\n\t\t\t}\n\t\t}\n\n\t\tSet<String> supported = new LinkedHashSet<>(original);\n\t\tMethodFilter method9 = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tsupported.contains(method.getName()) &&\n\t\t\t\tmethod5.isAssignableFrom(method.getReturnType()));\n\t\tfind2(met, cla2, method9);\n\n\t\tString method10 = supported.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!met.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tmethod10, cla2.getName(), method5.getName()));\n\n\t\tlong unique = met.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(unique == 1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tunique, method10, cla2.getName(), method5.getName()));\n\n\t\treturn met.iterator().next();\n\t}\n\n\tprivate static Set<Method> find2(Set<Method> met2, Class<?> cla3, MethodFilter method11) {\n\t\tmet2.addAll(MethodIntrospector.selectMethods(cla3, method11));\n\t\tif (met2.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(cla3)) {\n\t\t\tfind2(met2, cla3.getEnclosingClass(), method11);\n\t\t}\n\t\treturn met2;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "da262af0643625d3dba94ee96378cce5b56c8c51bdc8ee6a332668ff4f416cf8", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "shorten-identifiers", "level": 2, "line_count": 159, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__TestBeanOverrideProcessor__2647f409.java", "order": 2, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 83, "identifiers_declared": 30, "local_name_collisions_avoided": 17, "method_calls_renamed": 5, "method_declarations_renamed": 4, "method_name_collisions_avoided": 1, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-5ab92647f409-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1347, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7cf91c2a19b7-I03", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler validateEvent(Annotation defaultMessage, Class<?> nextToken, Field batch) {\n\t\tif (!(defaultMessage instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), batch.getDeclaringClass().getName(), batch.getName()));\n\t\t}\n\n\t\tString localKey = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString finalToken = testBean.methodName();\n\t\tBeanOverrideStrategy shipment = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod defaultRecord;\n\t\tif (!finalToken.isBlank()) {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tdefaultRecord = validateAccount(batch.getDeclaringClass(), batch.getType(), finalToken);\n\t\t}\n\t\telse {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> defaultBalance = new ArrayList<>();\n\t\t\tdefaultBalance.add(batch.getName());\n\n\t\t\tif (localKey != null) {\n\t\t\t\tdefaultBalance.add(localKey);\n\t\t\t}\n\t\t\tdefaultRecord = validateAccount(batch.getDeclaringClass(), batch.getType(), defaultBalance);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tbatch, ResolvableType.forField(batch, nextToken), localKey, testBean.contextName(), shipment, defaultRecord);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */\n\tMethod validateAccount(Class<?> price, Class<?> pendingAddress, String... remoteIndex) {\n\t\treturn validateAccount(price, pendingAddress, List.of(remoteIndex));\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod validateAccount(Class<?> token, Class<?> pendingRequest, Collection<String> defaultMode) {\n\t\tAssert.notEmpty(defaultMode, \"At least one candidate method name is required\");\n\t\tSet<Method> feature = new LinkedHashSet<>();\n\t\tSet<String> backupAccount = new LinkedHashSet<>(defaultMode);\n\n\t\t// Process fully-qualified method names first.\n\t\tfor (String localEvent : defaultMode) {\n\t\t\tint secureToken = localEvent.lastIndexOf('#');\n\t\t\tif (secureToken != -1) {\n\t\t\t\tString finalNode = localEvent.substring(0, secureToken).trim();\n\t\t\t\tAssert.hasText(finalNode, () -> \"No class name present in fully-qualified method name: \" + localEvent);\n\t\t\t\tString currentAccount = localEvent.substring(secureToken + 1).trim();\n\t\t\t\tAssert.hasText(currentAccount, () -> \"No method name present in fully-qualified method name: \" + localEvent);\n\t\t\t\tClass<?> pendingSession;\n\t\t\t\ttry {\n\t\t\t\t\tpendingSession = ClassUtils.forName(finalNode, getClass().getClassLoader());\n\t\t\t\t}\n\t\t\t\tcatch (ClassNotFoundException | LinkageError key) {\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\t\"Failed to load class for fully-qualified method name: \" + localEvent, key);\n\t\t\t\t}\n\t\t\t\tMethod primaryAccount = ReflectionUtils.findMethod(pendingSession, currentAccount);\n\t\t\t\tAssert.state(primaryAccount != null && Modifier.isStatic(primaryAccount.getModifiers()) &&\n\t\t\t\t\t\tpendingRequest.isAssignableFrom(primaryAccount.getReturnType()), () ->\n\t\t\t\t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tcurrentAccount, finalNode, pendingRequest.getName()));\n\t\t\t\tfeature.add(primaryAccount);\n\t\t\t\tbackupAccount.remove(localEvent);\n\t\t\t}\n\t\t}\n\n\t\tSet<String> primaryRequest = new LinkedHashSet<>(backupAccount);\n\t\tMethodFilter backupConfig = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tprimaryRequest.contains(method.getName()) &&\n\t\t\t\tpendingRequest.isAssignableFrom(method.getReturnType()));\n\t\tparseBuffer(feature, token, backupConfig);\n\n\t\tString primaryBalance = primaryRequest.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!feature.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tprimaryBalance, token.getName(), pendingRequest.getName()));\n\n\t\tlong currentSession = feature.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(currentSession == 1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tcurrentSession, primaryBalance, token.getName(), pendingRequest.getName()));\n\n\t\treturn feature.iterator().next();\n\t}\n\n\tprivate static Set<Method> parseBuffer(Set<Method> profile, Class<?> event, MethodFilter activeStatus) {\n\t\tprofile.addAll(MethodIntrospector.selectMethods(event, activeStatus));\n\t\tif (profile.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(event)) {\n\t\t\tparseBuffer(profile, event.getEnclosingClass(), activeStatus);\n\t\t}\n\t\treturn profile;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "4d0776f540c0f7547f2b949d42e8a5e8cf735de645ab117f469a9853fc459f62", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "mislead-identifiers", "level": 3, "line_count": 159, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__TestBeanOverrideProcessor__1c2a19b7.java", "order": 3, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 83, "identifiers_declared": 30, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 5, "local_exact_length_matches": 22, "local_random_pool_selections": 30, "local_total_length_difference": 31, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 5, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 4, "method_exact_length_matches": 2, "method_name_groups": 3, "method_random_pool_selections": 3, "method_total_length_difference": 10}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-7cf91c2a19b7-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1348, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4d4c35bf9917-I04", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler a(Annotation a, Class<?> b, Field c) {\n\t\tif (!(a instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), c.getDeclaringClass().getName(), c.getName()));\n\t\t}\n\n\t\tString d = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString e = testBean.methodName();\n\t\tBeanOverrideStrategy f = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod g;\n\t\tif (!e.isBlank()) {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tg = b(c.getDeclaringClass(), c.getType(), e);\n\t\t}\n\t\telse {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> h = new ArrayList<>();\n\t\t\th.add(c.getName());\n\n\t\t\tif (d != null) {\n\t\t\t\th.add(d);\n\t\t\t}\n\t\t\tg = b(c.getDeclaringClass(), c.getType(), h);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tc, ResolvableType.forField(c, b), d, testBean.contextName(), f, g);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */\n\tMethod b(Class<?> i, Class<?> j, String... k) {\n\t\treturn b(i, j, List.of(k));\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod b(Class<?> l, Class<?> m, Collection<String> n) {\n\t\tAssert.notEmpty(n, \"At least one candidate method name is required\");\n\t\tSet<Method> o = new LinkedHashSet<>();\n\t\tSet<String> p = new LinkedHashSet<>(n);\n\n\t\t// Process fully-qualified method names first.\n\t\tfor (String q : n) {\n\t\t\tint r = q.lastIndexOf('#');\n\t\t\tif (r != -1) {\n\t\t\t\tString s = q.substring(0, r).trim();\n\t\t\t\tAssert.hasText(s, () -> \"No class name present in fully-qualified method name: \" + q);\n\t\t\t\tString t = q.substring(r + 1).trim();\n\t\t\t\tAssert.hasText(t, () -> \"No method name present in fully-qualified method name: \" + q);\n\t\t\t\tClass<?> u;\n\t\t\t\ttry {\n\t\t\t\t\tu = ClassUtils.forName(s, getClass().getClassLoader());\n\t\t\t\t}\n\t\t\t\tcatch (ClassNotFoundException | LinkageError v) {\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\t\"Failed to load class for fully-qualified method name: \" + q, v);\n\t\t\t\t}\n\t\t\t\tMethod w = ReflectionUtils.findMethod(u, t);\n\t\t\t\tAssert.state(w != null && Modifier.isStatic(w.getModifiers()) &&\n\t\t\t\t\t\tm.isAssignableFrom(w.getReturnType()), () ->\n\t\t\t\t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tt, s, m.getName()));\n\t\t\t\to.add(w);\n\t\t\t\tp.remove(q);\n\t\t\t}\n\t\t}\n\n\t\tSet<String> x = new LinkedHashSet<>(p);\n\t\tMethodFilter y = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tx.contains(method.getName()) &&\n\t\t\t\tm.isAssignableFrom(method.getReturnType()));\n\t\tc(o, l, y);\n\n\t\tString z = x.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!o.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tz, l.getName(), m.getName()));\n\n\t\tlong A = o.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(A == 1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tA, z, l.getName(), m.getName()));\n\n\t\treturn o.iterator().next();\n\t}\n\n\tprivate static Set<Method> c(Set<Method> B, Class<?> C, MethodFilter D) {\n\t\tB.addAll(MethodIntrospector.selectMethods(C, D));\n\t\tif (B.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(C)) {\n\t\t\tc(B, C.getEnclosingClass(), D);\n\t\t}\n\t\treturn B;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "d7660bbc6fa49935a8ed7e5e67e3f19ffb9c41b2f52eb119563b7ac112a47004", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "garble-identifiers", "level": 4, "line_count": 159, "local_path": "identifiers/garble-identifiers/I04__spring-framework__TestBeanOverrideProcessor__35bf9917.java", "order": 4, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 83, "identifiers_declared": 30, "local_name_collisions_avoided": 0, "method_calls_renamed": 5, "method_declarations_renamed": 4, "method_name_collisions_avoided": 0, "method_name_groups": 3}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-4d4c35bf9917-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1349, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-24fb90cce459-I05", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler createHandler(Annotation overrideAnnotation, Class<?> testClass, Field field) {\n\t\tif (!(overrideAnnotation instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), field.getDeclaringClass().getName(), field.getName()));\n\t\t}\n\n\t\tString beanName = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString methodName = testBean.methodName();\n\t\tBeanOverrideStrategy strategy = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod factoryMethod;\n\t\tif (!methodName.isBlank()) {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), methodName);\n\t\t}\n\t\telse {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> candidateMethodNames = new ArrayList<>();\n\t\t\tcandidateMethodNames.add(field.getName());\n\n\t\t\tif (beanName != null) {\n\t\t\t\tcandidateMethodNames.add(beanName);\n\t\t\t}\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), candidateMethodNames);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tfield, ResolvableType.forField(field, testClass), beanName, testBean.contextName(), strategy, factoryMethod);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, String... methodNames) {\n\t\treturn findTestBeanFactoryMethod(clazz, methodReturnType, List.of(methodNames));\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, Collection<String> methodNames) {\n\t\tAssert.notEmpty(methodNames, \"At least one candidate method name is required\");\n\t\tSet<Method> methods = new LinkedHashSet<>();\n\t\tSet<String> originalNames = new LinkedHashSet<>(methodNames);\n\n\t\t// Process fully-qualified method names first.\n\t\tfor (String methodName : methodNames) {\n\t\t\tint indexOfHash = methodName.lastIndexOf('#');\n\t\t\tif (indexOfHash != -0x1) {\n\t\t\t\tString className = methodName.substring(0x0, indexOfHash).trim();\n\t\t\t\tAssert.hasText(className, () -> \"No class name present in fully-qualified method name: \" + methodName);\n\t\t\t\tString methodNameToUse = methodName.substring(indexOfHash + 0x1).trim();\n\t\t\t\tAssert.hasText(methodNameToUse, () -> \"No method name present in fully-qualified method name: \" + methodName);\n\t\t\t\tClass<?> declaringClass;\n\t\t\t\ttry {\n\t\t\t\t\tdeclaringClass = ClassUtils.forName(className, getClass().getClassLoader());\n\t\t\t\t}\n\t\t\t\tcatch (ClassNotFoundException | LinkageError ex) {\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\t\"Failed to load class for fully-qualified method name: \" + methodName, ex);\n\t\t\t\t}\n\t\t\t\tMethod externalMethod = ReflectionUtils.findMethod(declaringClass, methodNameToUse);\n\t\t\t\tAssert.state(externalMethod != null && Modifier.isStatic(externalMethod.getModifiers()) &&\n\t\t\t\t\t\tmethodReturnType.isAssignableFrom(externalMethod.getReturnType()), () ->\n\t\t\t\t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tmethodNameToUse, className, methodReturnType.getName()));\n\t\t\t\tmethods.add(externalMethod);\n\t\t\t\toriginalNames.remove(methodName);\n\t\t\t}\n\t\t}\n\n\t\tSet<String> supportedNames = new LinkedHashSet<>(originalNames);\n\t\tMethodFilter methodFilter = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tsupportedNames.contains(method.getName()) &&\n\t\t\t\tmethodReturnType.isAssignableFrom(method.getReturnType()));\n\t\tfindMethods(methods, clazz, methodFilter);\n\n\t\tString methodNamesDescription = supportedNames.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!methods.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tmethodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\tlong uniqueMethodNameCount = methods.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(uniqueMethodNameCount == 0x1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tuniqueMethodNameCount, methodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\treturn methods.iterator().next();\n\t}\n\n\tprivate static Set<Method> findMethods(Set<Method> methods, Class<?> clazz, MethodFilter methodFilter) {\n\t\tmethods.addAll(MethodIntrospector.selectMethods(clazz, methodFilter));\n\t\tif (methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)) {\n\t\t\tfindMethods(methods, clazz.getEnclosingClass(), methodFilter);\n\t\t}\n\t\treturn methods;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "0e07660dcf97bdfe6d50e1087b84185f6cd3bf5c2c1047a1b6f69e7d6db58510", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "encode-integer-literals", "level": 5, "line_count": 159, "local_path": "expressions/encode-integer-literals/I05__spring-framework__TestBeanOverrideProcessor__90cce459.java", "order": 5, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 4}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-24fb90cce459-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1350, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5b1574407ef6-I06", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler createHandler(Annotation overrideAnnotation, Class<?> testClass, Field field) {\n\t\tif (!((!(overrideAnnotation instanceof TestBean testBean)))) {} else {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), field.getDeclaringClass().getName(), field.getName()));\n\t\t}\n\n\t\tString beanName = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString methodName = testBean.methodName();\n\t\tBeanOverrideStrategy strategy = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod factoryMethod;\n\t\tif (!((!methodName.isBlank()))) {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> candidateMethodNames = new ArrayList<>();\n\t\t\tcandidateMethodNames.add(field.getName());\n\n\t\t\tif (beanName != null) {\n\t\t\t\tcandidateMethodNames.add(beanName);\n\t\t\t}\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), candidateMethodNames);\n\t\t} else {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), methodName);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tfield, ResolvableType.forField(field, testClass), beanName, testBean.contextName(), strategy, factoryMethod);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, String... methodNames) {\n\t\treturn findTestBeanFactoryMethod(clazz, methodReturnType, List.of(methodNames));\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, Collection<String> methodNames) {\n\t\tAssert.notEmpty(methodNames, \"At least one candidate method name is required\");\n\t\tSet<Method> methods = new LinkedHashSet<>();\n\t\tSet<String> originalNames = new LinkedHashSet<>(methodNames);\n\n\t\t// Process fully-qualified method names first.\n\t\tfor (String methodName : methodNames) {\n\t\t\tint indexOfHash = methodName.lastIndexOf('#');\n\t\t\tif (!((indexOfHash != -1))) {} else {\n\t\t\t\tString className = methodName.substring(0, indexOfHash).trim();\n\t\t\t\tAssert.hasText(className, () -> \"No class name present in fully-qualified method name: \" + methodName);\n\t\t\t\tString methodNameToUse = methodName.substring(indexOfHash + 1).trim();\n\t\t\t\tAssert.hasText(methodNameToUse, () -> \"No method name present in fully-qualified method name: \" + methodName);\n\t\t\t\tClass<?> declaringClass;\n\t\t\t\ttry {\n\t\t\t\t\tdeclaringClass = ClassUtils.forName(className, getClass().getClassLoader());\n\t\t\t\t}\n\t\t\t\tcatch (ClassNotFoundException | LinkageError ex) {\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\t\"Failed to load class for fully-qualified method name: \" + methodName, ex);\n\t\t\t\t}\n\t\t\t\tMethod externalMethod = ReflectionUtils.findMethod(declaringClass, methodNameToUse);\n\t\t\t\tAssert.state(externalMethod != null && Modifier.isStatic(externalMethod.getModifiers()) &&\n\t\t\t\t\t\tmethodReturnType.isAssignableFrom(externalMethod.getReturnType()), () ->\n\t\t\t\t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tmethodNameToUse, className, methodReturnType.getName()));\n\t\t\t\tmethods.add(externalMethod);\n\t\t\t\toriginalNames.remove(methodName);\n\t\t\t}\n\t\t}\n\n\t\tSet<String> supportedNames = new LinkedHashSet<>(originalNames);\n\t\tMethodFilter methodFilter = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tsupportedNames.contains(method.getName()) &&\n\t\t\t\tmethodReturnType.isAssignableFrom(method.getReturnType()));\n\t\tfindMethods(methods, clazz, methodFilter);\n\n\t\tString methodNamesDescription = supportedNames.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!methods.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tmethodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\tlong uniqueMethodNameCount = methods.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(uniqueMethodNameCount == 1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tuniqueMethodNameCount, methodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\treturn methods.iterator().next();\n\t}\n\n\tprivate static Set<Method> findMethods(Set<Method> methods, Class<?> clazz, MethodFilter methodFilter) {\n\t\tmethods.addAll(MethodIntrospector.selectMethods(clazz, methodFilter));\n\t\tif (!((methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)))) {} else {\n\t\t\tfindMethods(methods, clazz.getEnclosingClass(), methodFilter);\n\t\t}\n\t\treturn methods;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "1bd44a2ecf979087d4b98e005c9dc42c5808167ba857110851d3a327095a59fe", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "invert-conditions", "level": 6, "line_count": 158, "local_path": "expressions/invert-conditions/I06__spring-framework__TestBeanOverrideProcessor__74407ef6.java", "order": 6, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 4}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-5b1574407ef6-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1351, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6cc1f24bffd5-I07", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler createHandler(Annotation overrideAnnotation, Class<?> testClass, Field field) {\nif (((0x8892 ^ 0x8892) != 0)) { throw new AssertionError(); }\n\n\t\tif (!(overrideAnnotation instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), field.getDeclaringClass().getName(), field.getName()));\n\t\t}\n\n\t\tString beanName = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString methodName = testBean.methodName();\n\t\tBeanOverrideStrategy strategy = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod factoryMethod;\n\t\tif (!methodName.isBlank()) {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), methodName);\n\t\t}\n\t\telse {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> candidateMethodNames = new ArrayList<>();\n\t\t\tcandidateMethodNames.add(field.getName());\n\n\t\t\tif (beanName != null) {\n\t\t\t\tcandidateMethodNames.add(beanName);\n\t\t\t}\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), candidateMethodNames);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tfield, ResolvableType.forField(field, testClass), beanName, testBean.contextName(), strategy, factoryMethod);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, String... methodNames) {\nif (((0x9EB1 ^ 0x9EB1) != 0)) { throw new AssertionError(); }\n\n\t\treturn findTestBeanFactoryMethod(clazz, methodReturnType, List.of(methodNames));\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, Collection<String> methodNames) {\nif (((0xCB2E ^ 0xCB2E) != 0)) { throw new AssertionError(); }\n\n\t\tAssert.notEmpty(methodNames, \"At least one candidate method name is required\");\n\t\tSet<Method> methods = new LinkedHashSet<>();\n\t\tSet<String> originalNames = new LinkedHashSet<>(methodNames);\n\n\t\t// Process fully-qualified method names first.\n\t\tfor (String methodName : methodNames) {\n\t\t\tint indexOfHash = methodName.lastIndexOf('#');\n\t\t\tif (indexOfHash != -1) {\n\t\t\t\tString className = methodName.substring(0, indexOfHash).trim();\n\t\t\t\tAssert.hasText(className, () -> \"No class name present in fully-qualified method name: \" + methodName);\n\t\t\t\tString methodNameToUse = methodName.substring(indexOfHash + 1).trim();\n\t\t\t\tAssert.hasText(methodNameToUse, () -> \"No method name present in fully-qualified method name: \" + methodName);\n\t\t\t\tClass<?> declaringClass;\n\t\t\t\ttry {\n\t\t\t\t\tdeclaringClass = ClassUtils.forName(className, getClass().getClassLoader());\n\t\t\t\t}\n\t\t\t\tcatch (ClassNotFoundException | LinkageError ex) {\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\t\"Failed to load class for fully-qualified method name: \" + methodName, ex);\n\t\t\t\t}\n\t\t\t\tMethod externalMethod = ReflectionUtils.findMethod(declaringClass, methodNameToUse);\n\t\t\t\tAssert.state(externalMethod != null && Modifier.isStatic(externalMethod.getModifiers()) &&\n\t\t\t\t\t\tmethodReturnType.isAssignableFrom(externalMethod.getReturnType()), () ->\n\t\t\t\t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tmethodNameToUse, className, methodReturnType.getName()));\n\t\t\t\tmethods.add(externalMethod);\n\t\t\t\toriginalNames.remove(methodName);\n\t\t\t}\n\t\t}\n\n\t\tSet<String> supportedNames = new LinkedHashSet<>(originalNames);\n\t\tMethodFilter methodFilter = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tsupportedNames.contains(method.getName()) &&\n\t\t\t\tmethodReturnType.isAssignableFrom(method.getReturnType()));\n\t\tfindMethods(methods, clazz, methodFilter);\n\n\t\tString methodNamesDescription = supportedNames.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!methods.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tmethodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\tlong uniqueMethodNameCount = methods.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(uniqueMethodNameCount == 1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tuniqueMethodNameCount, methodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\treturn methods.iterator().next();\n\t}\n\n\tprivate static Set<Method> findMethods(Set<Method> methods, Class<?> clazz, MethodFilter methodFilter) {\nif (((0xB137 ^ 0xB137) != 0)) { throw new AssertionError(); }\n\n\t\tmethods.addAll(MethodIntrospector.selectMethods(clazz, methodFilter));\n\t\tif (methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)) {\n\t\t\tfindMethods(methods, clazz.getEnclosingClass(), methodFilter);\n\t\t}\n\t\treturn methods;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "10c86b3e01b038af08defee99f1e49b91df8b7a9127c81b300b484ec0ea864eb", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "insert-dead-branches", "level": 7, "line_count": 167, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__TestBeanOverrideProcessor__f24bffd5.java", "order": 7, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-6cc1f24bffd5-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1352, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-48648fc07c5e-I08", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler createHandler(Annotation overrideAnnotation, Class<?> testClass, Field field) {\n{\n  int remainingSteps = 3;\n  while (remainingSteps > 0) {\n    remainingSteps--;\n  }\n}\n\n\t\tif (!(overrideAnnotation instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), field.getDeclaringClass().getName(), field.getName()));\n\t\t}\n\n\t\tString beanName = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString methodName = testBean.methodName();\n\t\tBeanOverrideStrategy strategy = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod factoryMethod;\n\t\tif (!methodName.isBlank()) {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), methodName);\n\t\t}\n\t\telse {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> candidateMethodNames = new ArrayList<>();\n\t\t\tcandidateMethodNames.add(field.getName());\n\n\t\t\tif (beanName != null) {\n\t\t\t\tcandidateMethodNames.add(beanName);\n\t\t\t}\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), candidateMethodNames);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tfield, ResolvableType.forField(field, testClass), beanName, testBean.contextName(), strategy, factoryMethod);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, String... methodNames) {\n\t\treturn findTestBeanFactoryMethod(clazz, methodReturnType, List.of(methodNames));\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, Collection<String> methodNames) {\n\t\tAssert.notEmpty(methodNames, \"At least one candidate method name is required\");\n\t\tSet<Method> methods = new LinkedHashSet<>();\n\t\tSet<String> originalNames = new LinkedHashSet<>(methodNames);\n\n\t\t// Process fully-qualified method names first.\n\t\tfor (String methodName : methodNames) {\n\t\t\tint indexOfHash = methodName.lastIndexOf('#');\n\t\t\tif (indexOfHash != -1) {\n\t\t\t\tString className = methodName.substring(0, indexOfHash).trim();\n\t\t\t\tAssert.hasText(className, () -> \"No class name present in fully-qualified method name: \" + methodName);\n\t\t\t\tString methodNameToUse = methodName.substring(indexOfHash + 1).trim();\n\t\t\t\tAssert.hasText(methodNameToUse, () -> \"No method name present in fully-qualified method name: \" + methodName);\n\t\t\t\tClass<?> declaringClass;\n\t\t\t\ttry {\n\t\t\t\t\tdeclaringClass = ClassUtils.forName(className, getClass().getClassLoader());\n\t\t\t\t}\n\t\t\t\tcatch (ClassNotFoundException | LinkageError ex) {\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\t\"Failed to load class for fully-qualified method name: \" + methodName, ex);\n\t\t\t\t}\n\t\t\t\tMethod externalMethod = ReflectionUtils.findMethod(declaringClass, methodNameToUse);\n\t\t\t\tAssert.state(externalMethod != null && Modifier.isStatic(externalMethod.getModifiers()) &&\n\t\t\t\t\t\tmethodReturnType.isAssignableFrom(externalMethod.getReturnType()), () ->\n\t\t\t\t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tmethodNameToUse, className, methodReturnType.getName()));\n\t\t\t\tmethods.add(externalMethod);\n\t\t\t\toriginalNames.remove(methodName);\n\t\t\t}\n\t\t}\n\n\t\tSet<String> supportedNames = new LinkedHashSet<>(originalNames);\n\t\tMethodFilter methodFilter = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tsupportedNames.contains(method.getName()) &&\n\t\t\t\tmethodReturnType.isAssignableFrom(method.getReturnType()));\n\t\tfindMethods(methods, clazz, methodFilter);\n\n\t\tString methodNamesDescription = supportedNames.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!methods.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tmethodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\tlong uniqueMethodNameCount = methods.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(uniqueMethodNameCount == 1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tuniqueMethodNameCount, methodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\treturn methods.iterator().next();\n\t}\n\n\tprivate static Set<Method> findMethods(Set<Method> methods, Class<?> clazz, MethodFilter methodFilter) {\n\t\tmethods.addAll(MethodIntrospector.selectMethods(clazz, methodFilter));\n\t\tif (methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)) {\n\t\t\tfindMethods(methods, clazz.getEnclosingClass(), methodFilter);\n\t\t}\n\t\treturn methods;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "75862c4edaaf0837d4dd9562857b63cf60c0896658ec5a9caa6b6d9afbb47ccd", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 166, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__TestBeanOverrideProcessor__8fc07c5e.java", "order": 8, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 1}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-48648fc07c5e-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1353, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2fe37cc259f8-I09", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler createHandler(Annotation overrideAnnotation, Class<?> testClass, Field field) {\n\t\tif (!(overrideAnnotation instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), field.getDeclaringClass().getName(), field.getName()));\n\t\t}\n\n\t\tString beanName = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString methodName = testBean.methodName();\n\t\tBeanOverrideStrategy strategy = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod factoryMethod;\n\t\tif (!methodName.isBlank()) {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), methodName);\n\t\t}\n\t\telse {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> candidateMethodNames = new ArrayList<>();\n\t\t\tcandidateMethodNames.add(field.getName());\n\n\t\t\tif (beanName != null) {\n\t\t\t\tcandidateMethodNames.add(beanName);\n\t\t\t}\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), candidateMethodNames);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tfield, ResolvableType.forField(field, testClass), beanName, testBean.contextName(), strategy, factoryMethod);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, String... methodNames) {\n\t\treturn findTestBeanFactoryMethod(clazz, methodReturnType, List.of(methodNames));\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, Collection<String> methodNames) {\n\t\tAssert.notEmpty(methodNames, \"At least one candidate method name is required\");\n\t\tSet<Method> methods = new LinkedHashSet<>();\n\t\tSet<String> originalNames = new LinkedHashSet<>(methodNames);\n\n\t\t// Process fully-qualified method names first.\n\t\tfor (String methodName : methodNames) {\n\t\t\tint indexOfHash = methodName.lastIndexOf('#');\n\t\t\tif (indexOfHash != -1) {\n\t\t\t\tString className = methodName.substring(0, indexOfHash).trim();\n\t\t\t\tAssert.hasText(className, () -> \"No class name present in fully-qualified method name: \" + methodName);\n\t\t\t\tString methodNameToUse = methodName.substring(indexOfHash + 1).trim();\n\t\t\t\tAssert.hasText(methodNameToUse, () -> \"No method name present in fully-qualified method name: \" + methodName);\n\t\t\t\tClass<?> declaringClass;\n\t\t\t\ttry {\n\t\t\t\t\tdeclaringClass = ClassUtils.forName(className, getClass().getClassLoader());\n\t\t\t\t}\n\t\t\t\tcatch (ClassNotFoundException | LinkageError ex) {\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\t\"Failed to load class for fully-qualified method name: \" + methodName, ex);\n\t\t\t\t}\n\t\t\t\tMethod externalMethod = ReflectionUtils.findMethod(declaringClass, methodNameToUse);\n\t\t\t\tAssert.state(externalMethod != null && Modifier.isStatic(externalMethod.getModifiers()) &&\n\t\t\t\t\t\tmethodReturnType.isAssignableFrom(externalMethod.getReturnType()), () ->\n\t\t\t\t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tmethodNameToUse, className, methodReturnType.getName()));\n\t\t\t\tmethods.add(externalMethod);\n\t\t\t\toriginalNames.remove(methodName);\n\t\t\t}\n\t\t}\n\n\t\tSet<String> supportedNames = new LinkedHashSet<>(originalNames);\n\t\tMethodFilter methodFilter = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tsupportedNames.contains(method.getName()) &&\n\t\t\t\tmethodReturnType.isAssignableFrom(method.getReturnType()));\n\t\tfindMethods(methods, clazz, methodFilter);\n\n\t\tString methodNamesDescription = supportedNames.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!methods.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tmethodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\tlong uniqueMethodNameCount = methods.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(uniqueMethodNameCount == 1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tuniqueMethodNameCount, methodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\treturn methods.iterator().next();\n\t}\n\n\tprivate static Set<Method> findMethods(Set<Method> methods, Class<?> clazz, MethodFilter methodFilter) {\n{int lI0O_abe93111=0x3D69^0x3D69;if(lI0O_abe93111!=0){if(((lI0O_abe93111|1)&1)==0){lI0O_abe93111++;}else{lI0O_abe93111--;}}}\n\n\t\tmethods.addAll(MethodIntrospector.selectMethods(clazz, methodFilter));\n\t\tif (methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)) {\n\t\t\tfindMethods(methods, clazz.getEnclosingClass(), methodFilter);\n\t\t}\n\t\treturn methods;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "69332c560854a10c92167800d83b4fa94e215c004187171b5cee3fbb6342c043", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 161, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__TestBeanOverrideProcessor__7cc259f8.java", "order": 9, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 5}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-2fe37cc259f8-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1354, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f113d2b1010d-I10", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection; import java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors; import org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils; import org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy; import org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils; import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils.MethodFilter; import static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */ class TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override public TestBeanOverrideHandler createHandler(Annotation overrideAnnotation, Class<?> testClass, Field field) {\n\t\tif (!(overrideAnnotation instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\" .formatted(getClass().getSimpleName(), field.getDeclaringClass().getName(), field.getName()));\n\t\t} String beanName = (!testBean.name().isBlank() ? testBean.name() : null); String methodName = testBean.methodName();\n\t\tBeanOverrideStrategy strategy = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod factoryMethod;\n\t\tif (!methodName.isBlank()) {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), methodName);\n\t\t}\n\t\telse {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> candidateMethodNames = new ArrayList<>();\n\t\t\tcandidateMethodNames.add(field.getName());\n\n\t\t\tif (beanName != null) {\n\t\t\t\tcandidateMethodNames.add(beanName); } factoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), candidateMethodNames); }\n\n\t\treturn new TestBeanOverrideHandler( field, ResolvableType.forField(field, testClass), beanName, testBean.contextName(), strategy, factoryMethod);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */ Method findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, String... methodNames) {\n\t\treturn findTestBeanFactoryMethod(clazz, methodReturnType, List.of(methodNames)); }\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, Collection<String> methodNames) { Assert.notEmpty(methodNames, \"At least one candidate method name is required\");\n\t\tSet<Method> methods = new LinkedHashSet<>(); Set<String> originalNames = new LinkedHashSet<>(methodNames);\n\n\t\t// Process fully-qualified method names first.\n\t\tfor (String methodName : methodNames) { int indexOfHash = methodName.lastIndexOf('#'); if (indexOfHash != -1) { String className = methodName.substring(0, indexOfHash).trim();\n\t\t\t\tAssert.hasText(className, () -> \"No class name present in fully-qualified method name: \" + methodName); String methodNameToUse = methodName.substring(indexOfHash + 1).trim();\n\t\t\t\tAssert.hasText(methodNameToUse, () -> \"No method name present in fully-qualified method name: \" + methodName); Class<?> declaringClass;\n\t\t\t\ttry {\n\t\t\t\t\tdeclaringClass = ClassUtils.forName(className, getClass().getClassLoader()); }\n\t\t\t\tcatch (ClassNotFoundException | LinkageError ex) { throw new IllegalStateException( \"Failed to load class for fully-qualified method name: \" + methodName, ex);\n\t\t\t\t} Method externalMethod = ReflectionUtils.findMethod(declaringClass, methodNameToUse); Assert.state(externalMethod != null && Modifier.isStatic(externalMethod.getModifiers()) &&\n\t\t\t\t\t\tmethodReturnType.isAssignableFrom(externalMethod.getReturnType()), () -> \"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tmethodNameToUse, className, methodReturnType.getName()));\n\t\t\t\tmethods.add(externalMethod);\n\t\t\t\toriginalNames.remove(methodName); } }\n\n\t\tSet<String> supportedNames = new LinkedHashSet<>(originalNames); MethodFilter methodFilter = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tsupportedNames.contains(method.getName()) &&\n\t\t\t\tmethodReturnType.isAssignableFrom(method.getReturnType()));\n\t\tfindMethods(methods, clazz, methodFilter);\n\n\t\tString methodNamesDescription = supportedNames.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \")); Assert.state(!methods.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted( methodNamesDescription, clazz.getName(), methodReturnType.getName())); long uniqueMethodNameCount = methods.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(uniqueMethodNameCount == 1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tuniqueMethodNameCount, methodNamesDescription, clazz.getName(), methodReturnType.getName())); return methods.iterator().next();\n\t}\n\n\tprivate static Set<Method> findMethods(Set<Method> methods, Class<?> clazz, MethodFilter methodFilter) { methods.addAll(MethodIntrospector.selectMethods(clazz, methodFilter));\n\t\tif (methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)) { findMethods(methods, clazz.getEnclosingClass(), methodFilter); }\n\t\treturn methods;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "2b64ecf593ed6115676a88599027ddf21fc8e0272d1bef9fc5a23c3d6d0b5d1d", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "partially-compact-layout", "level": 10, "line_count": 115, "local_path": "layout/partially-compact-layout/I10__spring-framework__TestBeanOverrideProcessor__d2b1010d.java", "order": 10, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 104, "line_break_groups_removed": 41, "line_breaks_removed": 44, "whitespace_characters_removed": 107}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-f113d2b1010d-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1355, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b49dbc9bd302-I11", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler createHandler(Annotation overrideAnnotation, Class<?> testClass, Field field) {\n\t\tif (!(overrideAnnotation instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), field.getDeclaringClass().getName(), field.getName()));\n\t\t}\n\n\t\tString beanName = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString methodName = testBean.methodName();\n\t\tBeanOverrideStrategy strategy = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod factoryMethod;\n\t\tif (!methodName.isBlank()) {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), methodName);\n\t\t}\n\t\telse {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> candidateMethodNames = new ArrayList<>();\n\t\t\tcandidateMethodNames.add(field.getName());\n\n\t\t\tif (beanName != null) {\n\t\t\t\tcandidateMethodNames.add(beanName);\n\t\t\t}\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), candidateMethodNames);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tfield, ResolvableType.forField(field, testClass), beanName, testBean.contextName(), strategy, factoryMethod);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, String... methodNames) {\n\t\treturn findTestBeanFactoryMethod(clazz, methodReturnType, List.of(methodNames));\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, Collection<String> methodNames) {\n\t\tAssert.notEmpty(methodNames, \"At least one candidate method name is required\");\n\t\tSet<Method> methods = new LinkedHashSet<>();\n\t\tSet<String> originalNames = new LinkedHashSet<>(methodNames);\n\n\t\t// Process fully-qualified method names first.\n\t\tfor (String methodName : methodNames) {\n\t\t\tint indexOfHash = methodName.lastIndexOf('#');\n\t\t\tfinal int a = 2;\n\t\t\tfinal int b = -1;\n\t\t\tif (indexOfHash != -(a + b)) {\n\t\t\t\tfinal int c = 1;\n\t\t\t\tfinal int d = -1;\n\t\t\t\tString className = methodName.substring((c + d), indexOfHash).trim();\n\t\t\t\tAssert.hasText(className, () -> \"No class name present in fully-qualified method name: \" + methodName);\n\t\t\t\tfinal int e = 2;\n\t\t\t\tfinal int f = -1;\n\t\t\t\tString methodNameToUse = methodName.substring(indexOfHash + (e + f)).trim();\n\t\t\t\tAssert.hasText(methodNameToUse, () -> \"No method name present in fully-qualified method name: \" + methodName);\n\t\t\t\tClass<?> declaringClass;\n\t\t\t\ttry {\n\t\t\t\t\tdeclaringClass = ClassUtils.forName(className, getClass().getClassLoader());\n\t\t\t\t}\n\t\t\t\tcatch (ClassNotFoundException | LinkageError ex) {\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\t\"Failed to load class for fully-qualified method name: \" + methodName, ex);\n\t\t\t\t}\n\t\t\t\tMethod externalMethod = ReflectionUtils.findMethod(declaringClass, methodNameToUse);\n\t\t\t\tAssert.state(externalMethod != null && Modifier.isStatic(externalMethod.getModifiers()) &&\n\t\t\t\t\t\tmethodReturnType.isAssignableFrom(externalMethod.getReturnType()), () ->\n\t\t\t\t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tmethodNameToUse, className, methodReturnType.getName()));\n\t\t\t\tmethods.add(externalMethod);\n\t\t\t\toriginalNames.remove(methodName);\n\t\t\t}\n\t\t}\n\n\t\tSet<String> supportedNames = new LinkedHashSet<>(originalNames);\n\t\tMethodFilter methodFilter = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tsupportedNames.contains(method.getName()) &&\n\t\t\t\tmethodReturnType.isAssignableFrom(method.getReturnType()));\n\t\tfindMethods(methods, clazz, methodFilter);\n\n\t\tString methodNamesDescription = supportedNames.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!methods.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tmethodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\tlong uniqueMethodNameCount = methods.stream().map(Method::getName).distinct().count();\n\t\tfinal int g = 2;\n\t\tfinal int h = -1;\n\t\tAssert.state(uniqueMethodNameCount == (g + h), () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tuniqueMethodNameCount, methodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\treturn methods.iterator().next();\n\t}\n\n\tprivate static Set<Method> findMethods(Set<Method> methods, Class<?> clazz, MethodFilter methodFilter) {\n\t\tmethods.addAll(MethodIntrospector.selectMethods(clazz, methodFilter));\n\t\tif (methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)) {\n\t\t\tfindMethods(methods, clazz.getEnclosingClass(), methodFilter);\n\t\t}\n\t\treturn methods;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "0863cf18b1026b53f004bf7b42c90c981e7abcc1960effbb665f04b4c949f04d", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 167, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__TestBeanOverrideProcessor__bc9bd302.java", "order": 11, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 4, "intermediate_variables_introduced": 8, "statements_augmented": 4}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-b49dbc9bd302-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1356, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d62fbb4fbc9c-I12", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler createHandler(Annotation overrideAnnotation, Class<?> testClass, Field field) {\n\t\tif (!(overrideAnnotation instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), field.getDeclaringClass().getName(), field.getName()));\n\t\t}\n\n\t\tString beanName = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString methodName = testBean.methodName();\n\t\t\n\n\t\tMethod factoryMethod;\n\t\tif (!methodName.isBlank()) {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), methodName);\n\t\t}\n\t\telse {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> candidateMethodNames = new ArrayList<>();\n\t\t\tcandidateMethodNames.add(field.getName());\n\n\t\t\tif (beanName != null) {\n\t\t\t\tcandidateMethodNames.add(beanName);\n\t\t\t}\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), candidateMethodNames);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tfield, ResolvableType.forField(field, testClass), beanName, testBean.contextName(), ((testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE)), factoryMethod);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, String... methodNames) {\n\t\treturn findTestBeanFactoryMethod(clazz, methodReturnType, List.of(methodNames));\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, Collection<String> methodNames) {\n\t\tAssert.notEmpty(methodNames, \"At least one candidate method name is required\");\n\t\tSet<Method> methods = new LinkedHashSet<>();\n\t\tSet<String> originalNames = new LinkedHashSet<>(methodNames);\n\n\t\t// Process fully-qualified method names first.\n\t\tfor (String methodName : methodNames) {\n\t\t\tint indexOfHash = methodName.lastIndexOf('#');\n\t\t\tif (indexOfHash != -1) {\n\t\t\t\tString className = methodName.substring(0, indexOfHash).trim();\n\t\t\t\tAssert.hasText(className, () -> \"No class name present in fully-qualified method name: \" + methodName);\n\t\t\t\tString methodNameToUse = methodName.substring(indexOfHash + 1).trim();\n\t\t\t\tAssert.hasText(methodNameToUse, () -> \"No method name present in fully-qualified method name: \" + methodName);\n\t\t\t\tClass<?> declaringClass;\n\t\t\t\ttry {\n\t\t\t\t\tdeclaringClass = ClassUtils.forName(className, getClass().getClassLoader());\n\t\t\t\t}\n\t\t\t\tcatch (ClassNotFoundException | LinkageError ex) {\n\t\t\t\t\tthrow new IllegalStateException(\n\t\t\t\t\t\t\t\"Failed to load class for fully-qualified method name: \" + methodName, ex);\n\t\t\t\t}\n\t\t\t\tMethod externalMethod = ReflectionUtils.findMethod(declaringClass, methodNameToUse);\n\t\t\t\tAssert.state(externalMethod != null && Modifier.isStatic(externalMethod.getModifiers()) &&\n\t\t\t\t\t\tmethodReturnType.isAssignableFrom(externalMethod.getReturnType()), () ->\n\t\t\t\t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\t\t\t\t\tmethodNameToUse, className, methodReturnType.getName()));\n\t\t\t\tmethods.add(externalMethod);\n\t\t\t\toriginalNames.remove(methodName);\n\t\t\t}\n\t\t}\n\n\t\tSet<String> supportedNames = new LinkedHashSet<>(originalNames);\n\t\t\n\t\tfindMethods(methods, clazz, (method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tsupportedNames.contains(method.getName()) &&\n\t\t\t\tmethodReturnType.isAssignableFrom(method.getReturnType()))));\n\n\t\tString methodNamesDescription = supportedNames.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!methods.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tmethodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\tlong uniqueMethodNameCount = methods.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(uniqueMethodNameCount == 1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tuniqueMethodNameCount, methodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\treturn methods.iterator().next();\n\t}\n\n\tprivate static Set<Method> findMethods(Set<Method> methods, Class<?> clazz, MethodFilter methodFilter) {\n\t\tmethods.addAll(MethodIntrospector.selectMethods(clazz, methodFilter));\n\t\tif (methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)) {\n\t\t\tfindMethods(methods, clazz.getEnclosingClass(), methodFilter);\n\t\t}\n\t\treturn methods;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "6f66c3748e7f21bab9f4831877e70c77a5a907a4c6368b9f26836688bc0235ae", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 159, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__TestBeanOverrideProcessor__bb4fbc9c.java", "order": 12, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 2, "intermediate_variables_available": 2, "intermediate_variables_inlined": 2, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-d62fbb4fbc9c-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1357, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-791f1f4dfff2-I13", "source": "package org.springframework.test.context.bean.override.convention;\nimport java.lang.annotation.Annotation;\nimport java.lang.reflect.Field;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Modifier;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport org.springframework.core.MethodIntrospector;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.test.context.TestContextAnnotationUtils;\nimport org.springframework.test.context.bean.override.BeanOverrideProcessor;\nimport org.springframework.test.context.bean.override.BeanOverrideStrategy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ReflectionUtils;\nimport org.springframework.util.ReflectionUtils.MethodFilter;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE;\nimport static org.springframework.test.context.bean.override.BeanOverrideStrategy.REPLACE_OR_CREATE;\n\n/**\n * {@link BeanOverrideProcessor} implementation for {@link TestBean @TestBean}\n * support, which creates a {@link TestBeanOverrideHandler} for annotated\n * fields in a given class and ensures that a corresponding static factory method\n * exists, according to the {@linkplain TestBean documented conventions}.\n *\n * @author Simon Baslé\n * @author Sam Brannen\n * @author Stephane Nicoll\n * @since 6.2\n */\nclass TestBeanOverrideProcessor implements BeanOverrideProcessor {\n\n\t@Override\n\tpublic TestBeanOverrideHandler createHandler(Annotation overrideAnnotation, Class<?> testClass, Field field) {\n\t\tif (!(overrideAnnotation instanceof TestBean testBean)) {\n\t\t\tthrow new IllegalStateException(\"Invalid annotation passed to %s: expected @TestBean on field %s.%s\"\n\t\t\t\t\t.formatted(getClass().getSimpleName(), field.getDeclaringClass().getName(), field.getName()));\n\t\t}\n\n\t\tString beanName = (!testBean.name().isBlank() ? testBean.name() : null);\n\t\tString methodName = testBean.methodName();\n\t\tBeanOverrideStrategy strategy = (testBean.enforceOverride() ? REPLACE : REPLACE_OR_CREATE);\n\n\t\tMethod factoryMethod;\n\t\tif (!methodName.isBlank()) {\n\t\t\t// If the user specified an explicit method name, search for that.\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), methodName);\n\t\t}\n\t\telse {\n\t\t\t// Otherwise, search for candidate factory methods whose names match either\n\t\t\t// the field name or the explicit bean name (if any).\n\t\t\tList<String> candidateMethodNames = new ArrayList<>();\n\t\t\tcandidateMethodNames.add(field.getName());\n\n\t\t\tif (beanName != null) {\n\t\t\t\tcandidateMethodNames.add(beanName);\n\t\t\t}\n\t\t\tfactoryMethod = findTestBeanFactoryMethod(field.getDeclaringClass(), field.getType(), candidateMethodNames);\n\t\t}\n\n\t\treturn new TestBeanOverrideHandler(\n\t\t\t\tfield, ResolvableType.forField(field, testClass), beanName, testBean.contextName(), strategy, factoryMethod);\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}.\n\t * <p>Delegates to {@link #findTestBeanFactoryMethod(Class, Class, Collection)}.\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, String... methodNames) {\n\t\treturn findTestBeanFactoryMethod(clazz, methodReturnType, List.of(methodNames));\n\t}\n\n\t/**\n\t * Find a test bean factory {@link Method} for the given {@link Class}, which\n\t * meets the following criteria.\n\t * <ul>\n\t * <li>The method is static.</li>\n\t * <li>The method does not accept any arguments.</li>\n\t * <li>The method's return type matches the supplied {@code methodReturnType}.</li>\n\t * <li>The method's name is one of the supplied {@code methodNames}.</li>\n\t * </ul>\n\t * <p>This method traverses up the type hierarchy of the given class in search\n\t * of the factory method, beginning with the class itself and then searching\n\t * implemented interfaces and superclasses. If a factory method is not found\n\t * in the type hierarchy, this method will also search the enclosing class\n\t * hierarchy if the class is a nested class.\n\t * <p>If multiple factory methods are found that match the search criteria,\n\t * an exception is thrown.\n\t * @param clazz the class in which to search for the factory method\n\t * @param methodReturnType the return type for the factory method\n\t * @param methodNames a set of supported names for the factory method\n\t * @return the corresponding factory method\n\t * @throws IllegalStateException if a matching factory method cannot\n\t * be found or multiple methods match\n\t */\n\tMethod findTestBeanFactoryMethod(Class<?> clazz, Class<?> methodReturnType, Collection<String> methodNames) {\n\t\tAssert.notEmpty(methodNames, \"At least one candidate method name is required\");\n\t\tSet<Method> methods = new LinkedHashSet<>();\n\t\tSet<String> originalNames = new LinkedHashSet<>(methodNames);\n\n\t\t// Process fully-qualified method names first.\n\t\t{\n\t\t  java.util.Iterator<?> loopIterator = (methodNames).iterator();\n\t\t  while (loopIterator.hasNext()) {\n\t\t    String methodName = (String) loopIterator.next();\n\t\t    int indexOfHash = methodName.lastIndexOf('#');\n\t\t    if (indexOfHash != -1) {\n\t\t    \tString className = methodName.substring(0, indexOfHash).trim();\n\t\t    \tAssert.hasText(className, () -> \"No class name present in fully-qualified method name: \" + methodName);\n\t\t    \tString methodNameToUse = methodName.substring(indexOfHash + 1).trim();\n\t\t    \tAssert.hasText(methodNameToUse, () -> \"No method name present in fully-qualified method name: \" + methodName);\n\t\t    \tClass<?> declaringClass;\n\t\t    \ttry {\n\t\t    \t\tdeclaringClass = ClassUtils.forName(className, getClass().getClassLoader());\n\t\t    \t}\n\t\t    \tcatch (ClassNotFoundException | LinkageError ex) {\n\t\t    \t\tthrow new IllegalStateException(\n\t\t    \t\t\t\t\"Failed to load class for fully-qualified method name: \" + methodName, ex);\n\t\t    \t}\n\t\t    \tMethod externalMethod = ReflectionUtils.findMethod(declaringClass, methodNameToUse);\n\t\t    \tAssert.state(externalMethod != null && Modifier.isStatic(externalMethod.getModifiers()) &&\n\t\t    \t\t\tmethodReturnType.isAssignableFrom(externalMethod.getReturnType()), () ->\n\t\t    \t\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t    \t\t\t\t\t\t\tmethodNameToUse, className, methodReturnType.getName()));\n\t\t    \tmethods.add(externalMethod);\n\t\t    \toriginalNames.remove(methodName);\n\t\t    }\n\t\t  }\n\t\t}\n\n\t\tSet<String> supportedNames = new LinkedHashSet<>(originalNames);\n\t\tMethodFilter methodFilter = method -> (Modifier.isStatic(method.getModifiers()) &&\n\t\t\t\tsupportedNames.contains(method.getName()) &&\n\t\t\t\tmethodReturnType.isAssignableFrom(method.getReturnType()));\n\t\tfindMethods(methods, clazz, methodFilter);\n\n\t\tString methodNamesDescription = supportedNames.stream()\n\t\t\t\t.map(name -> name + \"()\").collect(Collectors.joining(\" or \"));\n\t\tAssert.state(!methods.isEmpty(), () ->\n\t\t\t\t\"No static method found named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tmethodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\tlong uniqueMethodNameCount = methods.stream().map(Method::getName).distinct().count();\n\t\tAssert.state(uniqueMethodNameCount == 1, () ->\n\t\t\t\t\"Found %d competing static methods named %s in %s with return type %s\".formatted(\n\t\t\t\t\t\tuniqueMethodNameCount, methodNamesDescription, clazz.getName(), methodReturnType.getName()));\n\n\t\treturn methods.iterator().next();\n\t}\n\n\tprivate static Set<Method> findMethods(Set<Method> methods, Class<?> clazz, MethodFilter methodFilter) {\n\t\tmethods.addAll(MethodIntrospector.selectMethods(clazz, methodFilter));\n\t\tif (methods.isEmpty() && TestContextAnnotationUtils.searchEnclosingClass(clazz)) {\n\t\t\tfindMethods(methods, clazz.getEnclosingClass(), methodFilter);\n\t\t}\n\t\treturn methods;\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__TestBeanOverrideProcessor__bb6b6dc3.java", "base_sample_id": "source-19b15f76737e8d0a", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "d3fe2ad7b46bb717c7fefa9e79e9ceb23dba92c629cf5f007eeccac3c8d4b5b1", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java", "interference": "lower-for-to-while", "level": 13, "line_count": 163, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__TestBeanOverrideProcessor__1f4dfff2.java", "order": 13, "original_content_sha256": "3ddbf39f4d35483c6a6b90baefca51c7f9e620d5b46a6a97c12fd469ae5bc238", "parent_variant_id": "int-c9f3bb6b6dc3-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.java#L43-L178", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 1, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "TestBeanOverrideProcessor", "variant_id": "int-791f1f4dfff2-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1358, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b13c6d9c7b87-SRC", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n/**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long getDefaultAsyncSendTimeout() {\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void setAsyncSendTimeout(long timeout) {\n\t\tthis.defaultAsyncSendTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getDefaultMaxSessionIdleTimeout() {\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxSessionIdleTimeout(long timeout) {\n\t\tthis.defaultMaxSessionIdleTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxBinaryMessageBufferSize() {\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxBinaryMessageBufferSize(int max) {\n\t\tthis.defaultMaxBinaryMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxTextMessageBufferSize() {\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxTextMessageBufferSize(int max) {\n\t\tthis.defaultMaxTextMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic Set<Extension> getInstalledExtensions() {\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Object annotatedEndpointInstance, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<?> annotatedEndpointClass, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Endpoint endpointInstance, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t// ServerContainer\n\n\t@Override\n\tpublic void addEndpoint(Class<?> endpointClass) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void addEndpoint(ServerEndpointConfig serverConfig) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse,\n\t\t\tServerEndpointConfig sec, Map<String, String> pathParameters) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": null, "level": 0, "line_count": 126, "local_path": "source-original/SRC__spring-framework__MockServerContainer__6d9c7b87.java", "order": 0, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-b13c6d9c7b87-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1247, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-aade970569c2-I01", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n\n\n\n\n\n\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t \n\n\t@Override\n\tpublic long getDefaultAsyncSendTimeout() {\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void setAsyncSendTimeout(long timeout) {\n\t\tthis.defaultAsyncSendTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getDefaultMaxSessionIdleTimeout() {\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxSessionIdleTimeout(long timeout) {\n\t\tthis.defaultMaxSessionIdleTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxBinaryMessageBufferSize() {\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxBinaryMessageBufferSize(int max) {\n\t\tthis.defaultMaxBinaryMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxTextMessageBufferSize() {\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxTextMessageBufferSize(int max) {\n\t\tthis.defaultMaxTextMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic Set<Extension> getInstalledExtensions() {\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Object annotatedEndpointInstance, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<?> annotatedEndpointClass, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Endpoint endpointInstance, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t \n\n\t@Override\n\tpublic void addEndpoint(Class<?> endpointClass) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void addEndpoint(ServerEndpointConfig serverConfig) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse,\n\t\t\tServerEndpointConfig sec, Map<String, String> pathParameters) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "7ef3b0b9d883be1c229ef8896644c2c6a2dd6805baf057814bba0382b944e1a5", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "remove-comments", "level": 1, "line_count": 126, "local_path": "comments/remove-comments/I01__spring-framework__MockServerContainer__970569c2.java", "order": 1, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 171, "comments_removed": 3}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-aade970569c2-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1248, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-065e9fb41615-I02", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n/**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long get() {\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void set(long tim) {\n\t\tthis.defaultAsyncSendTimeout = tim;\n\t}\n\n\t@Override\n\tpublic long get2() {\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void set2(long tim2) {\n\t\tthis.defaultMaxSessionIdleTimeout = tim2;\n\t}\n\n\t@Override\n\tpublic int get3() {\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void set3(int max) {\n\t\tthis.defaultMaxBinaryMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic int get4() {\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void set4(int max) {\n\t\tthis.defaultMaxTextMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic Set<Extension> get5() {\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session connect(Object annotated, URI pat) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connect(Class<?> annotated2, URI pat2) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connect(Endpoint endpoint, ClientEndpointConfig cec, URI pat3)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connect(Class<? extends Endpoint> endpoint2, ClientEndpointConfig cec, URI pat4)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t// ServerContainer\n\n\t@Override\n\tpublic void add(Class<?> endpoint3) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void add(ServerEndpointConfig server2) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void upgrade(Object http, Object http2,\n\t\t\tServerEndpointConfig sec, Map<String, String> path) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "78aa0ea9532bb0d1a17fe2d4a2a8a6529cf13c82442f5106cd27fe45fac1da2d", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "shorten-identifiers", "level": 2, "line_count": 126, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__MockServerContainer__9fb41615.java", "order": 2, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 20, "local_name_collisions_avoided": 9, "method_calls_renamed": 0, "method_declarations_renamed": 16, "method_name_collisions_avoided": 7, "method_name_groups": 12}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-065e9fb41615-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1249, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-eb0ea4b3e2e5-I03", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n/**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long validateAddress() {\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void validateAccount(long history) {\n\t\tthis.defaultAsyncSendTimeout = history;\n\t}\n\n\t@Override\n\tpublic long validateRequest() {\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void validateBalance(long channel) {\n\t\tthis.defaultMaxSessionIdleTimeout = channel;\n\t}\n\n\t@Override\n\tpublic int validateSession() {\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void validateMessage(int map) {\n\t\tthis.defaultMaxBinaryMessageBufferSize = map;\n\t}\n\n\t@Override\n\tpublic int validateStatus() {\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void refreshBalance(int key) {\n\t\tthis.defaultMaxTextMessageBufferSize = key;\n\t}\n\n\t@Override\n\tpublic Set<Extension> refreshAddress() {\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session refreshAccount(Object primaryRequest, URI step) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session refreshAccount(Class<?> defaultBalance, URI mode) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session refreshAccount(Endpoint currentRequest, ClientEndpointConfig age, URI item)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session refreshAccount(Class<? extends Endpoint> primaryClient, ClientEndpointConfig date, URI flag)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t// ServerContainer\n\n\t@Override\n\tpublic void buildReport(Class<?> recentMessage) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void buildReport(ServerEndpointConfig activeStatus) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void validateClient(Object primaryBalance, Object defaultSession,\n\t\t\tServerEndpointConfig path, Map<String, String> primaryMessage) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "fc105d8aa3604929a634ad712d280a96dc2ea234729eba6fbbe9405a261f12c8", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "mislead-identifiers", "level": 3, "line_count": 126, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__MockServerContainer__a4b3e2e5.java", "order": 3, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 20, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 10, "local_exact_length_matches": 13, "local_random_pool_selections": 20, "local_total_length_difference": 32, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 42, "method_declarations_renamed": 16, "method_exact_length_matches": 1, "method_name_groups": 12, "method_random_pool_selections": 12, "method_total_length_difference": 146}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-eb0ea4b3e2e5-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1250, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-44a0d701b700-I04", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n/**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long a() {\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void b(long a) {\n\t\tthis.defaultAsyncSendTimeout = a;\n\t}\n\n\t@Override\n\tpublic long c() {\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void d(long b) {\n\t\tthis.defaultMaxSessionIdleTimeout = b;\n\t}\n\n\t@Override\n\tpublic int e() {\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void f(int c) {\n\t\tthis.defaultMaxBinaryMessageBufferSize = c;\n\t}\n\n\t@Override\n\tpublic int g() {\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void h(int d) {\n\t\tthis.defaultMaxTextMessageBufferSize = d;\n\t}\n\n\t@Override\n\tpublic Set<Extension> i() {\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session j(Object e, URI f) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session j(Class<?> g, URI h) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session j(Endpoint i, ClientEndpointConfig j, URI k)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session j(Class<? extends Endpoint> l, ClientEndpointConfig m, URI n)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t// ServerContainer\n\n\t@Override\n\tpublic void k(Class<?> o) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void k(ServerEndpointConfig p) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void l(Object q, Object r,\n\t\t\tServerEndpointConfig s, Map<String, String> t) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "7819149dd5a26a1d0dbf41d9cf846264bc9d26455cb0af545294e0ec123d3379", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "garble-identifiers", "level": 4, "line_count": 126, "local_path": "identifiers/garble-identifiers/I04__spring-framework__MockServerContainer__d701b700.java", "order": 4, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 20, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 16, "method_name_collisions_avoided": 0, "method_name_groups": 12}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-44a0d701b700-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1251, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1bf264a017db-I05", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n/**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long getDefaultAsyncSendTimeout() {\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void setAsyncSendTimeout(long timeout) {\n\t\tthis.defaultAsyncSendTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getDefaultMaxSessionIdleTimeout() {\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxSessionIdleTimeout(long timeout) {\n\t\tthis.defaultMaxSessionIdleTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxBinaryMessageBufferSize() {\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxBinaryMessageBufferSize(int max) {\n\t\tthis.defaultMaxBinaryMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxTextMessageBufferSize() {\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxTextMessageBufferSize(int max) {\n\t\tthis.defaultMaxTextMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic Set<Extension> getInstalledExtensions() {\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Object annotatedEndpointInstance, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<?> annotatedEndpointClass, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Endpoint endpointInstance, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t// ServerContainer\n\n\t@Override\n\tpublic void addEndpoint(Class<?> endpointClass) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void addEndpoint(ServerEndpointConfig serverConfig) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse,\n\t\t\tServerEndpointConfig sec, Map<String, String> pathParameters) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "encode-integer-literals", "level": 5, "line_count": 126, "local_path": "expressions/encode-integer-literals/I05__spring-framework__MockServerContainer__64a017db.java", "order": 5, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-1bf264a017db-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1252, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-096c8b821135-I06", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n/**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long getDefaultAsyncSendTimeout() {\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void setAsyncSendTimeout(long timeout) {\n\t\tthis.defaultAsyncSendTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getDefaultMaxSessionIdleTimeout() {\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxSessionIdleTimeout(long timeout) {\n\t\tthis.defaultMaxSessionIdleTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxBinaryMessageBufferSize() {\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxBinaryMessageBufferSize(int max) {\n\t\tthis.defaultMaxBinaryMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxTextMessageBufferSize() {\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxTextMessageBufferSize(int max) {\n\t\tthis.defaultMaxTextMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic Set<Extension> getInstalledExtensions() {\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Object annotatedEndpointInstance, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<?> annotatedEndpointClass, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Endpoint endpointInstance, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t// ServerContainer\n\n\t@Override\n\tpublic void addEndpoint(Class<?> endpointClass) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void addEndpoint(ServerEndpointConfig serverConfig) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse,\n\t\t\tServerEndpointConfig sec, Map<String, String> pathParameters) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "invert-conditions", "level": 6, "line_count": 126, "local_path": "expressions/invert-conditions/I06__spring-framework__MockServerContainer__8b821135.java", "order": 6, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-096c8b821135-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1253, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0c97b0860be8-I07", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n/**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long getDefaultAsyncSendTimeout() {\nif (((0x250A ^ 0x250A) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void setAsyncSendTimeout(long timeout) {\nif (((0x3C55 ^ 0x3C55) != 0)) { throw new AssertionError(); }\n\n\t\tthis.defaultAsyncSendTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getDefaultMaxSessionIdleTimeout() {\nif (((0x333D ^ 0x333D) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxSessionIdleTimeout(long timeout) {\nif (((0xE447 ^ 0xE447) != 0)) { throw new AssertionError(); }\n\n\t\tthis.defaultMaxSessionIdleTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxBinaryMessageBufferSize() {\nif (((0x99CA ^ 0x99CA) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxBinaryMessageBufferSize(int max) {\nif (((0xFF2 ^ 0xFF2) != 0)) { throw new AssertionError(); }\n\n\t\tthis.defaultMaxBinaryMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxTextMessageBufferSize() {\nif (((0x3D9 ^ 0x3D9) != 0)) { throw new AssertionError(); }\n\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxTextMessageBufferSize(int max) {\nif (((0xB2E3 ^ 0xB2E3) != 0)) { throw new AssertionError(); }\n\n\t\tthis.defaultMaxTextMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic Set<Extension> getInstalledExtensions() {\nif (((0xBA60 ^ 0xBA60) != 0)) { throw new AssertionError(); }\n\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Object annotatedEndpointInstance, URI path) throws DeploymentException, IOException {\nif (((0xE0B7 ^ 0xE0B7) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<?> annotatedEndpointClass, URI path) throws DeploymentException, IOException {\nif (((0xF445 ^ 0xF445) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Endpoint endpointInstance, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\nif (((0x176F ^ 0x176F) != 0)) { throw new AssertionError(); }\n\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\nif (((0x7CD3 ^ 0x7CD3) != 0)) { throw new AssertionError(); }\n\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t// ServerContainer\n\n\t@Override\n\tpublic void addEndpoint(Class<?> endpointClass) throws DeploymentException {\nif (((0x95B ^ 0x95B) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void addEndpoint(ServerEndpointConfig serverConfig) throws DeploymentException {\nif (((0x2706 ^ 0x2706) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse,\n\t\t\tServerEndpointConfig sec, Map<String, String> pathParameters) throws IOException, DeploymentException {\nif (((0xD597 ^ 0xD597) != 0)) { throw new AssertionError(); }\n\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "f3dec5725f26f0b9b054caaede97a8101d5ad38bab91de1d85ed8d9144e17dd8", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "insert-dead-branches", "level": 7, "line_count": 158, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__MockServerContainer__b0860be8.java", "order": 7, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 16}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-0c97b0860be8-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1254, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e38351ed7aaf-I08", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n/**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long getDefaultAsyncSendTimeout() {\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void setAsyncSendTimeout(long timeout) {\n\t\tthis.defaultAsyncSendTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getDefaultMaxSessionIdleTimeout() {\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxSessionIdleTimeout(long timeout) {\n{\n  int startingPosition = 2;\n  int endingPosition = 9;\n  int travelDistance = endingPosition - startingPosition;\n  if (travelDistance < 0) {\n    travelDistance = -travelDistance;\n  }\n}\n\n\t\tthis.defaultMaxSessionIdleTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxBinaryMessageBufferSize() {\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxBinaryMessageBufferSize(int max) {\n\t\tthis.defaultMaxBinaryMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxTextMessageBufferSize() {\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxTextMessageBufferSize(int max) {\n\t\tthis.defaultMaxTextMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic Set<Extension> getInstalledExtensions() {\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Object annotatedEndpointInstance, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<?> annotatedEndpointClass, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Endpoint endpointInstance, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t// ServerContainer\n\n\t@Override\n\tpublic void addEndpoint(Class<?> endpointClass) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void addEndpoint(ServerEndpointConfig serverConfig) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse,\n\t\t\tServerEndpointConfig sec, Map<String, String> pathParameters) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "67e74b3c997282c0e6658a4309a4d90a63d267c911ff9bbc1edeb4963d3cea63", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 135, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__MockServerContainer__51ed7aaf.java", "order": 8, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 9}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-e38351ed7aaf-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1255, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-71e1cd2e24fd-I09", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n/**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long getDefaultAsyncSendTimeout() {\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void setAsyncSendTimeout(long timeout) {\n\t\tthis.defaultAsyncSendTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getDefaultMaxSessionIdleTimeout() {\n{int lI0O_022ba1d0=(0x6F8B^0x6F8B);switch(lI0O_022ba1d0){case 0:lI0O_022ba1d0|=0;break;default:lI0O_022ba1d0&=0;}}\n\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxSessionIdleTimeout(long timeout) {\n\t\tthis.defaultMaxSessionIdleTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxBinaryMessageBufferSize() {\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxBinaryMessageBufferSize(int max) {\n\t\tthis.defaultMaxBinaryMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxTextMessageBufferSize() {\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxTextMessageBufferSize(int max) {\n\t\tthis.defaultMaxTextMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic Set<Extension> getInstalledExtensions() {\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Object annotatedEndpointInstance, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<?> annotatedEndpointClass, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Endpoint endpointInstance, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t// ServerContainer\n\n\t@Override\n\tpublic void addEndpoint(Class<?> endpointClass) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void addEndpoint(ServerEndpointConfig serverConfig) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse,\n\t\t\tServerEndpointConfig sec, Map<String, String> pathParameters) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "76e9c08225b1b3efb6d3fa4d13fadd21657a1012c472867dc53b402f29f6a24b", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 128, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__MockServerContainer__cd2e24fd.java", "order": 9, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 6}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-71e1cd2e24fd-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1256, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1819125354af-I10", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set; import jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException; import jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig; /**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long getDefaultAsyncSendTimeout() {\n\t\treturn this.defaultAsyncSendTimeout; } @Override public void setAsyncSendTimeout(long timeout) {\n\t\tthis.defaultAsyncSendTimeout = timeout;\n\t} @Override\n\tpublic long getDefaultMaxSessionIdleTimeout() {\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t} @Override\n\tpublic void setDefaultMaxSessionIdleTimeout(long timeout) { this.defaultMaxSessionIdleTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxBinaryMessageBufferSize() { return this.defaultMaxBinaryMessageBufferSize; }\n\n\t@Override public void setDefaultMaxBinaryMessageBufferSize(int max) { this.defaultMaxBinaryMessageBufferSize = max; }\n\n\t@Override public int getDefaultMaxTextMessageBufferSize() {\n\t\treturn this.defaultMaxTextMessageBufferSize; } @Override public void setDefaultMaxTextMessageBufferSize(int max) {\n\t\tthis.defaultMaxTextMessageBufferSize = max; }\n\n\t@Override public Set<Extension> getInstalledExtensions() {\n\t\treturn Collections.emptySet();\n\t} @Override\n\tpublic Session connectToServer(Object annotatedEndpointInstance, URI path) throws DeploymentException, IOException { throw new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override public Session connectToServer(Class<?> annotatedEndpointClass, URI path) throws DeploymentException, IOException { throw new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\"); }\n\n\t@Override\n\tpublic Session connectToServer(Endpoint endpointInstance, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t} @Override\n\tpublic Session connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException { throw new UnsupportedOperationException( \"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\"); } // ServerContainer\n @Override public void addEndpoint(Class<?> endpointClass) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override public void addEndpoint(ServerEndpointConfig serverConfig) throws DeploymentException { throw new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\"); }\n\n\t@Override public void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse,\n\t\t\tServerEndpointConfig sec, Map<String, String> pathParameters) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "fca67977fe139192f54fa9f0143779d382b09b04266013e3ee425369e5ae5e3f", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "partially-compact-layout", "level": 10, "line_count": 80, "local_path": "layout/partially-compact-layout/I10__spring-framework__MockServerContainer__125354af.java", "order": 10, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 91, "line_break_groups_removed": 36, "line_breaks_removed": 46, "whitespace_characters_removed": 53}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-1819125354af-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1257, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-335a45821af4-I11", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n/**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long getDefaultAsyncSendTimeout() {\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void setAsyncSendTimeout(long timeout) {\n\t\tthis.defaultAsyncSendTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getDefaultMaxSessionIdleTimeout() {\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxSessionIdleTimeout(long timeout) {\n\t\tthis.defaultMaxSessionIdleTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxBinaryMessageBufferSize() {\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxBinaryMessageBufferSize(int max) {\n\t\tthis.defaultMaxBinaryMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxTextMessageBufferSize() {\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxTextMessageBufferSize(int max) {\n\t\tthis.defaultMaxTextMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic Set<Extension> getInstalledExtensions() {\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Object annotatedEndpointInstance, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<?> annotatedEndpointClass, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Endpoint endpointInstance, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t// ServerContainer\n\n\t@Override\n\tpublic void addEndpoint(Class<?> endpointClass) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void addEndpoint(ServerEndpointConfig serverConfig) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse,\n\t\t\tServerEndpointConfig sec, Map<String, String> pathParameters) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 126, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__MockServerContainer__45821af4.java", "order": 11, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-335a45821af4-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1258, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d714e1d5d0d1-I12", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n/**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long getDefaultAsyncSendTimeout() {\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void setAsyncSendTimeout(long timeout) {\n\t\tthis.defaultAsyncSendTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getDefaultMaxSessionIdleTimeout() {\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxSessionIdleTimeout(long timeout) {\n\t\tthis.defaultMaxSessionIdleTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxBinaryMessageBufferSize() {\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxBinaryMessageBufferSize(int max) {\n\t\tthis.defaultMaxBinaryMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxTextMessageBufferSize() {\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxTextMessageBufferSize(int max) {\n\t\tthis.defaultMaxTextMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic Set<Extension> getInstalledExtensions() {\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Object annotatedEndpointInstance, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<?> annotatedEndpointClass, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Endpoint endpointInstance, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t// ServerContainer\n\n\t@Override\n\tpublic void addEndpoint(Class<?> endpointClass) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void addEndpoint(ServerEndpointConfig serverConfig) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse,\n\t\t\tServerEndpointConfig sec, Map<String, String> pathParameters) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 126, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__MockServerContainer__e1d5d0d1.java", "order": 12, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-d714e1d5d0d1-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1259, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1bf79c9c0543-I13", "source": "package org.springframework.test.context.web.socket;\nimport java.io.IOException;\nimport java.net.URI;\nimport java.util.Collections;\nimport java.util.Map;\nimport java.util.Set;\nimport jakarta.websocket.ClientEndpointConfig;\nimport jakarta.websocket.DeploymentException;\nimport jakarta.websocket.Endpoint;\nimport jakarta.websocket.Extension;\nimport jakarta.websocket.Session;\nimport jakarta.websocket.server.ServerContainer;\nimport jakarta.websocket.server.ServerEndpointConfig;\n\n/**\n * Mock implementation of the {@link jakarta.websocket.server.ServerContainer} interface.\n *\n * @author Sam Brannen\n * @since 4.3.1\n */\nclass MockServerContainer implements ServerContainer {\n\n\tprivate long defaultAsyncSendTimeout;\n\n\tprivate long defaultMaxSessionIdleTimeout;\n\n\tprivate int defaultMaxBinaryMessageBufferSize;\n\n\tprivate int defaultMaxTextMessageBufferSize;\n\n\n\t// WebSocketContainer\n\n\t@Override\n\tpublic long getDefaultAsyncSendTimeout() {\n\t\treturn this.defaultAsyncSendTimeout;\n\t}\n\n\t@Override\n\tpublic void setAsyncSendTimeout(long timeout) {\n\t\tthis.defaultAsyncSendTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic long getDefaultMaxSessionIdleTimeout() {\n\t\treturn this.defaultMaxSessionIdleTimeout;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxSessionIdleTimeout(long timeout) {\n\t\tthis.defaultMaxSessionIdleTimeout = timeout;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxBinaryMessageBufferSize() {\n\t\treturn this.defaultMaxBinaryMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxBinaryMessageBufferSize(int max) {\n\t\tthis.defaultMaxBinaryMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic int getDefaultMaxTextMessageBufferSize() {\n\t\treturn this.defaultMaxTextMessageBufferSize;\n\t}\n\n\t@Override\n\tpublic void setDefaultMaxTextMessageBufferSize(int max) {\n\t\tthis.defaultMaxTextMessageBufferSize = max;\n\t}\n\n\t@Override\n\tpublic Set<Extension> getInstalledExtensions() {\n\t\treturn Collections.emptySet();\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Object annotatedEndpointInstance, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Object, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<?> annotatedEndpointClass, URI path) throws DeploymentException, IOException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support connectToServer(Class, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Endpoint endpointInstance, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Endpoint, ClientEndpointConfig, URI)\");\n\t}\n\n\t@Override\n\tpublic Session connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)\n\t\t\tthrows DeploymentException, IOException {\n\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support connectToServer(Class, ClientEndpointConfig, URI)\");\n\t}\n\n\n\t// ServerContainer\n\n\t@Override\n\tpublic void addEndpoint(Class<?> endpointClass) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support addEndpoint(Class)\");\n\t}\n\n\t@Override\n\tpublic void addEndpoint(ServerEndpointConfig serverConfig) throws DeploymentException {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\"MockServerContainer does not support addEndpoint(ServerEndpointConfig)\");\n\t}\n\n\t@Override\n\tpublic void upgradeHttpToWebSocket(Object httpServletRequest, Object httpServletResponse,\n\t\t\tServerEndpointConfig sec, Map<String, String> pathParameters) throws IOException, DeploymentException {\n\n\t\tthrow new UnsupportedOperationException(\"MockServerContainer does not support upgradeHttpToWebSocket\");\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__MockServerContainer__6d9c7b87.java", "base_sample_id": "source-afbc282693a8eda3", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java", "interference": "lower-for-to-while", "level": 13, "line_count": 126, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__MockServerContainer__9c9c0543.java", "order": 13, "original_content_sha256": "5e92423558b8f30aaf33cb7aaf7fa06a8c1b1a4ad0786a472de6d1c2dccd06fe", "parent_variant_id": "int-b13c6d9c7b87-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/context/web/socket/MockServerContainer.java#L33-L144", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "MockServerContainer", "variant_id": "int-1bf79c9c0543-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1260, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-50920301d41b-SRC", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */\npublic interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid afterConfigurerAdded(WebTestClient.Builder builder,\n\t\t\t@Nullable WebHttpHandlerBuilder httpHandlerBuilder,\n\t\t\t@Nullable ClientHttpConnector connector);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": null, "level": 0, "line_count": 31, "local_path": "source-original/SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "order": 0, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-50920301d41b-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1387, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b02ee4d9da12-I01", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n\n\n\n\n\n\n\n\n\npublic interface WebTestClientConfigurer {\n\n\t\n\n\n\n\n\n\n\n\n\n\tvoid afterConfigurerAdded(WebTestClient.Builder builder,\n\t\t\t@Nullable WebHttpHandlerBuilder httpHandlerBuilder,\n\t\t\t@Nullable ClientHttpConnector connector);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "c237d45d3098db8d82a8347f5e8d46bc62574390632a2e7defee9586a2dae977", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "remove-comments", "level": 1, "line_count": 31, "local_path": "comments/remove-comments/I01__spring-framework__WebTestClientConfigurer__e4d9da12.java", "order": 1, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 763, "comments_removed": 2}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-b02ee4d9da12-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1388, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3574c9b8832f-I02", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */\npublic interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid after(WebTestClient.Builder bui,\n\t\t\t@Nullable WebHttpHandlerBuilder http2,\n\t\t\t@Nullable ClientHttpConnector con);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e2bc9a59f6d5fe065cf8d95f5a96ef761abd2f1216445e96282850d37f680eba", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "shorten-identifiers", "level": 2, "line_count": 31, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__WebTestClientConfigurer__c9b8832f.java", "order": 2, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 3, "local_name_collisions_avoided": 1, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-3574c9b8832f-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1389, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-498f5b33d806-I03", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */\npublic interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid validateAddress(WebTestClient.Builder message,\n\t\t\t@Nullable WebHttpHandlerBuilder defaultMessage,\n\t\t\t@Nullable ClientHttpConnector nextBatch);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "afc58e80b9c9beb7536f5ad10524c779be5a2c44be2379aba9d7c51bf6f12b65", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "mislead-identifiers", "level": 3, "line_count": 31, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__WebTestClientConfigurer__5b33d806.java", "order": 3, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 3, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 2, "local_random_pool_selections": 3, "local_total_length_difference": 4, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 1, "method_exact_length_matches": 0, "method_name_groups": 1, "method_random_pool_selections": 1, "method_total_length_difference": 5}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-498f5b33d806-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1390, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2571d4107bce-I04", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */\npublic interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid a(WebTestClient.Builder a,\n\t\t\t@Nullable WebHttpHandlerBuilder b,\n\t\t\t@Nullable ClientHttpConnector c);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "d1f4e16cf903f2d90ff7e2576f1b6dc1392d5e7b23d9b43856f0d3a2ae0ce4f1", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "garble-identifiers", "level": 4, "line_count": 31, "local_path": "identifiers/garble-identifiers/I04__spring-framework__WebTestClientConfigurer__d4107bce.java", "order": 4, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 3, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-2571d4107bce-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1391, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b996cfadf5a7-I05", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */\npublic interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid afterConfigurerAdded(WebTestClient.Builder builder,\n\t\t\t@Nullable WebHttpHandlerBuilder httpHandlerBuilder,\n\t\t\t@Nullable ClientHttpConnector connector);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "encode-integer-literals", "level": 5, "line_count": 31, "local_path": "expressions/encode-integer-literals/I05__spring-framework__WebTestClientConfigurer__cfadf5a7.java", "order": 5, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-b996cfadf5a7-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1392, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a2a9f606eb01-I06", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */\npublic interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid afterConfigurerAdded(WebTestClient.Builder builder,\n\t\t\t@Nullable WebHttpHandlerBuilder httpHandlerBuilder,\n\t\t\t@Nullable ClientHttpConnector connector);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "invert-conditions", "level": 6, "line_count": 31, "local_path": "expressions/invert-conditions/I06__spring-framework__WebTestClientConfigurer__f606eb01.java", "order": 6, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-a2a9f606eb01-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1393, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-45b6e28cd679-I07", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */\npublic interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid afterConfigurerAdded(WebTestClient.Builder builder,\n\t\t\t@Nullable WebHttpHandlerBuilder httpHandlerBuilder,\n\t\t\t@Nullable ClientHttpConnector connector);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "insert-dead-branches", "level": 7, "line_count": 31, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__WebTestClientConfigurer__e28cd679.java", "order": 7, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-45b6e28cd679-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1394, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9d73e963dfaf-I08", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */\npublic interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid afterConfigurerAdded(WebTestClient.Builder builder,\n\t\t\t@Nullable WebHttpHandlerBuilder httpHandlerBuilder,\n\t\t\t@Nullable ClientHttpConnector connector);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 31, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__WebTestClientConfigurer__e963dfaf.java", "order": 8, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-9d73e963dfaf-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1395, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bcfaca7954d9-I09", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */\npublic interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid afterConfigurerAdded(WebTestClient.Builder builder,\n\t\t\t@Nullable WebHttpHandlerBuilder httpHandlerBuilder,\n\t\t\t@Nullable ClientHttpConnector connector);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 31, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__WebTestClientConfigurer__ca7954d9.java", "order": 9, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-bcfaca7954d9-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1396, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7ada9b3396be-I10", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable; import org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */ public interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid afterConfigurerAdded(WebTestClient.Builder builder,\n\t\t\t@Nullable WebHttpHandlerBuilder httpHandlerBuilder, @Nullable ClientHttpConnector connector); }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "afd9b4eaa9a9103031fa1b34d46e48880b2484577b66e6b341f8b9cd3463f0ee", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "partially-compact-layout", "level": 10, "line_count": 26, "local_path": "layout/partially-compact-layout/I10__spring-framework__WebTestClientConfigurer__9b3396be.java", "order": 10, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 10, "line_break_groups_removed": 4, "line_breaks_removed": 5, "whitespace_characters_removed": 4}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-7ada9b3396be-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1397, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ad823b54afc0-I11", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */\npublic interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid afterConfigurerAdded(WebTestClient.Builder builder,\n\t\t\t@Nullable WebHttpHandlerBuilder httpHandlerBuilder,\n\t\t\t@Nullable ClientHttpConnector connector);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 31, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__WebTestClientConfigurer__3b54afc0.java", "order": 11, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-ad823b54afc0-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1398, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7414ec3fa3b4-I12", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */\npublic interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid afterConfigurerAdded(WebTestClient.Builder builder,\n\t\t\t@Nullable WebHttpHandlerBuilder httpHandlerBuilder,\n\t\t\t@Nullable ClientHttpConnector connector);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 31, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__WebTestClientConfigurer__ec3fa3b4.java", "order": 12, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-7414ec3fa3b4-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1399, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1adb08b86cb1-I13", "source": "package org.springframework.test.web.reactive.server;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.client.reactive.ClientHttpConnector;\nimport org.springframework.web.server.adapter.WebHttpHandlerBuilder;\n\n/**\n * Contract to encapsulate customizations to a {@link WebTestClient.Builder}.\n * Typically used by frameworks that wish to provide a shortcut for common\n * initialization.\n *\n * @author Rossen Stoyanchev\n * @since 5.0\n * @see MockServerConfigurer\n */\npublic interface WebTestClientConfigurer {\n\n\t/**\n\t * Use methods on {@link WebTestClient.Builder} to modify test client\n\t * settings. For a mock WebFlux server, use {@link WebHttpHandlerBuilder}\n\t * to customize server configuration. For a MockMvc server, mutate the\n\t * {@link org.springframework.test.web.servlet.client.MockMvcHttpConnector}\n\t * and set it on {@link WebTestClient.Builder}.\n\t * @param builder the WebTestClient builder for test client changes\n\t * @param httpHandlerBuilder for mock WebFlux server settings\n\t * @param connector the connector in use\n\t */\n\tvoid afterConfigurerAdded(WebTestClient.Builder builder,\n\t\t\t@Nullable WebHttpHandlerBuilder httpHandlerBuilder,\n\t\t\t@Nullable ClientHttpConnector connector);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__WebTestClientConfigurer__0301d41b.java", "base_sample_id": "source-150df13460e6370e", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java", "interference": "lower-for-to-while", "level": 13, "line_count": 31, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__WebTestClientConfigurer__08b86cb1.java", "order": 13, "original_content_sha256": "d777f44d8369abcea2acd742f43e73bd6c10005343e7cc08e8595f4c3dc97dd0", "parent_variant_id": "int-50920301d41b-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClientConfigurer.java#L24-L49", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "WebTestClientConfigurer", "variant_id": "int-1adb08b86cb1-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1400, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c58208235f06-SRC", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */\n\tpublic ResultMatcher name(Matcher<? super String> matcher) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", mav.getViewName(), matcher);\n\t\t};\n\t}\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher name(String expectedViewName) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", expectedViewName, mav.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": null, "level": 0, "line_count": 54, "local_path": "source-original/SRC__spring-framework__ViewResultMatchers__08235f06.java", "order": 0, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-c58208235f06-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1373, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f569dcadf454-I01", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n\n\n\n\n\n\n\n\n\npublic class ViewResultMatchers {\n\n\t\n\n\n\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t\n\n\n\tpublic ResultMatcher name(Matcher<? super String> matcher) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", mav.getViewName(), matcher);\n\t\t};\n\t}\n\n\t\n\n\n\tpublic ResultMatcher name(String expectedViewName) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", expectedViewName, mav.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "ed7b985f1f5f0cdb7c4043208cb5a5a19e5746c09597c257f0a24f4d51b166b4", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "remove-comments", "level": 1, "line_count": 54, "local_path": "comments/remove-comments/I01__spring-framework__ViewResultMatchers__dcadf454.java", "order": 1, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 393, "comments_removed": 4}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-f569dcadf454-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1374, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5b9b8cd0c987-I02", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */\n\tpublic ResultMatcher nam(Matcher<? super String> mat) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", mav.getViewName(), mat);\n\t\t};\n\t}\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher nam(String expected) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", expected, mav.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "fb1acf9927deff311aaba8ce9dfc9400b65d3b9f5fd01c266b29f90e31a57277", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "shorten-identifiers", "level": 2, "line_count": 54, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__ViewResultMatchers__8cd0c987.java", "order": 2, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 6, "identifiers_declared": 4, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-5b9b8cd0c987-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1375, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-4b3f9beeba89-I03", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */\n\tpublic ResultMatcher join(Matcher<? super String> invoice) {\n\t\treturn result -> {\n\t\t\tModelAndView map = result.getModelAndView();\n\t\t\tif (map == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", map.getViewName(), invoice);\n\t\t};\n\t}\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher join(String primaryBalance) {\n\t\treturn result -> {\n\t\t\tModelAndView key = result.getModelAndView();\n\t\t\tif (key == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", primaryBalance, key.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "8caa189e09458d895445abf559175a3a08dbeb8fa545f3594eb99138f67f0033", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "mislead-identifiers", "level": 3, "line_count": 54, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__ViewResultMatchers__9beeba89.java", "order": 3, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 6, "identifiers_declared": 4, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 3, "local_random_pool_selections": 4, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 2, "method_exact_length_matches": 1, "method_name_groups": 1, "method_random_pool_selections": 1, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-4b3f9beeba89-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1376, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6496ea68b3f3-I04", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */\n\tpublic ResultMatcher a(Matcher<? super String> a) {\n\t\treturn result -> {\n\t\t\tModelAndView b = result.getModelAndView();\n\t\t\tif (b == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", b.getViewName(), a);\n\t\t};\n\t}\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher a(String c) {\n\t\treturn result -> {\n\t\t\tModelAndView d = result.getModelAndView();\n\t\t\tif (d == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", c, d.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "97feec1a7d29fb9cf875647ad0d560db4eeb7e7ba4506b466471cf4452879fc8", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "garble-identifiers", "level": 4, "line_count": 54, "local_path": "identifiers/garble-identifiers/I04__spring-framework__ViewResultMatchers__ea68b3f3.java", "order": 4, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 6, "identifiers_declared": 4, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 2, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-6496ea68b3f3-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1377, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ac8107fe94db-I05", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */\n\tpublic ResultMatcher name(Matcher<? super String> matcher) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", mav.getViewName(), matcher);\n\t\t};\n\t}\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher name(String expectedViewName) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", expectedViewName, mav.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "encode-integer-literals", "level": 5, "line_count": 54, "local_path": "expressions/encode-integer-literals/I05__spring-framework__ViewResultMatchers__07fe94db.java", "order": 5, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-ac8107fe94db-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1378, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f38d55b25459-I06", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */\n\tpublic ResultMatcher name(Matcher<? super String> matcher) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (!((mav == null))) {} else {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", mav.getViewName(), matcher);\n\t\t};\n\t}\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher name(String expectedViewName) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (!((mav == null))) {} else {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", expectedViewName, mav.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "cb03454ee3cd4ef3573a205c670456f63c2cb9b82374dfcf2d307da903dda851", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "invert-conditions", "level": 6, "line_count": 54, "local_path": "expressions/invert-conditions/I06__spring-framework__ViewResultMatchers__55b25459.java", "order": 6, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-f38d55b25459-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1379, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3b748a6f158a-I07", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\nif (((0x24BC ^ 0x24BC) != 0)) { throw new AssertionError(); }\n\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */\n\tpublic ResultMatcher name(Matcher<? super String> matcher) {\nif (((0x4BA6 ^ 0x4BA6) != 0)) { throw new AssertionError(); }\n\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", mav.getViewName(), matcher);\n\t\t};\n\t}\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher name(String expectedViewName) {\nif (((0x332B ^ 0x332B) != 0)) { throw new AssertionError(); }\n\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", expectedViewName, mav.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "57bcd083e39c6e9ff8fc46c818ce742945874b119d622e59bdbb9da8cad76792", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "insert-dead-branches", "level": 7, "line_count": 60, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__ViewResultMatchers__8a6f158a.java", "order": 7, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 3}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-3b748a6f158a-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1380, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e74be4e7aea6-I08", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */\n\tpublic ResultMatcher name(Matcher<? super String> matcher) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", mav.getViewName(), matcher);\n\t\t};\n\t}\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher name(String expectedViewName) {\n{\n  int factorial = 1;\n  for (int currentFactor = 2; currentFactor <= 4; currentFactor++) {\n    factorial *= currentFactor;\n  }\n}\n\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", expectedViewName, mav.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "16180c71cc6efe132622e4f62ab4de94458c934e86f71ba15d596e11ee7112d8", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 61, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__ViewResultMatchers__e4e7aea6.java", "order": 8, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 6}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-e74be4e7aea6-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1381, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9cb1c5c0031a-I09", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */\n\tpublic ResultMatcher name(Matcher<? super String> matcher) {\n{int lI0O_44a83a01=0x302F;lI0O_44a83a01=(lI0O_44a83a01<<1)^(lI0O_44a83a01>>>1);lI0O_44a83a01&=0;}\n\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", mav.getViewName(), matcher);\n\t\t};\n\t}\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher name(String expectedViewName) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", expectedViewName, mav.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "672db2648d0f4c06eb7a0c7e9b747ab25e4908d4ecafffbfc0e175a1232c3593", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 56, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__ViewResultMatchers__c5c0031a.java", "order": 9, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 3}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-9cb1c5c0031a-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1382, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5b68a64e7bef-I10", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher; import org.springframework.web.servlet.ModelAndView; import static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */ public ResultMatcher name(Matcher<? super String> matcher) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView(); if (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\"); } assertThat(\"View name\", mav.getViewName(), matcher); }; }\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher name(String expectedViewName) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView(); if (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\"); } assertEquals(\"View name\", expectedViewName, mav.getViewName());\n\t\t}; }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "f1793d10c7f990d3ad16aca2f2bf95d85bc096b68455d5d39a4414ac2f9e3839", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "partially-compact-layout", "level": 10, "line_count": 42, "local_path": "layout/partially-compact-layout/I10__spring-framework__ViewResultMatchers__a64e7bef.java", "order": 10, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 32, "line_break_groups_removed": 12, "line_breaks_removed": 12, "whitespace_characters_removed": 23}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-5b68a64e7bef-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1383, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bb3680f62c49-I11", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */\n\tpublic ResultMatcher name(Matcher<? super String> matcher) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", mav.getViewName(), matcher);\n\t\t};\n\t}\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher name(String expectedViewName) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", expectedViewName, mav.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 54, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__ViewResultMatchers__80f62c49.java", "order": 11, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-bb3680f62c49-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1384, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-cfe32a294103-I12", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */\n\tpublic ResultMatcher name(Matcher<? super String> matcher) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", mav.getViewName(), matcher);\n\t\t};\n\t}\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher name(String expectedViewName) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", expectedViewName, mav.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 54, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__ViewResultMatchers__2a294103.java", "order": 12, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-cfe32a294103-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1385, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f9da8df983a7-I13", "source": "package org.springframework.test.web.servlet.result;\nimport org.hamcrest.Matcher;\nimport org.springframework.test.web.servlet.ResultMatcher;\nimport org.springframework.web.servlet.ModelAndView;\nimport static org.hamcrest.MatcherAssert.assertThat;\nimport static org.springframework.test.util.AssertionErrors.assertEquals;\nimport static org.springframework.test.util.AssertionErrors.fail;\n\n/**\n * Factory for assertions on the selected view.\n *\n * <p>An instance of this class is typically accessed via\n * {@link MockMvcResultMatchers#view}.\n *\n * @author Rossen Stoyanchev\n * @since 3.2\n */\npublic class ViewResultMatchers {\n\n\t/**\n\t * Protected constructor.\n\t * Use {@link MockMvcResultMatchers#view()}.\n\t */\n\tprotected ViewResultMatchers() {\n\t}\n\n\n\t/**\n\t * Assert the selected view name with the given Hamcrest {@link Matcher}.\n\t */\n\tpublic ResultMatcher name(Matcher<? super String> matcher) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertThat(\"View name\", mav.getViewName(), matcher);\n\t\t};\n\t}\n\n\t/**\n\t * Assert the selected view name.\n\t */\n\tpublic ResultMatcher name(String expectedViewName) {\n\t\treturn result -> {\n\t\t\tModelAndView mav = result.getModelAndView();\n\t\t\tif (mav == null) {\n\t\t\t\tfail(\"No ModelAndView found\");\n\t\t\t}\n\t\t\tassertEquals(\"View name\", expectedViewName, mav.getViewName());\n\t\t};\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__ViewResultMatchers__08235f06.java", "base_sample_id": "source-490eb1be66617481", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java", "interference": "lower-for-to-while", "level": 13, "line_count": 54, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__ViewResultMatchers__8df983a7.java", "order": 13, "original_content_sha256": "a8ccc474e6cac1e02b3ef555df9f4e397063f883e53ba358398b33f5d5ac0a7e", "parent_variant_id": "int-c58208235f06-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-test/src/main/java/org/springframework/test/web/servlet/result/ViewResultMatchers.java#L28-L73", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ViewResultMatchers", "variant_id": "int-f9da8df983a7-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1386, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b38bdcae3336-SRC", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n/**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> headers) {\n\t\tsuper(headers);\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType getContentType() {\n\t\tif (this.cachedContentType != null) {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t\telse {\n\t\t\tMediaType contentType = super.getContentType();\n\t\t\tthis.cachedContentType = contentType;\n\t\t\treturn contentType;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> getAccept() {\n\t\tif (this.cachedAccept != null) {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t\telse {\n\t\t\tList<MediaType> accept = super.getAccept();\n\t\t\tthis.cachedAccept = accept;\n\t\t\treturn accept;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearContentHeaders() {\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> get(String headerName) {\n\t\tList<String> values = this.headers.get(headerName);\n\t\treturn (values != null ? Collections.unmodifiableList(values) : null);\n\t}\n\n\t@Override\n\tpublic void add(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(String key, List<? extends String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void set(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void setAll(Map<String, String> values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> toSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> asSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> asMultiValueMap() {\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> headerNames() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> put(String key, List<String> value) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> putIfAbsent(String headerName, List<String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(@Nullable HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(Map<? extends String, ? extends List<String>> headers) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> remove(String key) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void clear() {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> headerSet() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void forEach(BiConsumer<? super String, ? super List<String>> action) {\n\t\tfor (String name : this.headers.keySet()) {\n\t\t\tList<String> values = this.headers.get(name);\n\t\t\taction.accept(name, (values != null ? Collections.unmodifiableList(values) : Collections.emptyList()));\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": null, "level": 0, "line_count": 171, "local_path": "source-original/SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "order": 0, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-b38bdcae3336-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1275, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-440989a2fa4e-I01", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n\n\n\n\n\n\n\n\n\n\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> headers) {\n\t\tsuper(headers);\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType getContentType() {\n\t\tif (this.cachedContentType != null) {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t\telse {\n\t\t\tMediaType contentType = super.getContentType();\n\t\t\tthis.cachedContentType = contentType;\n\t\t\treturn contentType;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> getAccept() {\n\t\tif (this.cachedAccept != null) {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t\telse {\n\t\t\tList<MediaType> accept = super.getAccept();\n\t\t\tthis.cachedAccept = accept;\n\t\t\treturn accept;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearContentHeaders() {\n\t\t \n\t}\n\n\t@Override\n\tpublic @Nullable List<String> get(String headerName) {\n\t\tList<String> values = this.headers.get(headerName);\n\t\treturn (values != null ? Collections.unmodifiableList(values) : null);\n\t}\n\n\t@Override\n\tpublic void add(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(String key, List<? extends String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void set(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void setAll(Map<String, String> values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> toSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> asSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> asMultiValueMap() {\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> headerNames() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> put(String key, List<String> value) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> putIfAbsent(String headerName, List<String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(@Nullable HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(Map<? extends String, ? extends List<String>> headers) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> remove(String key) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void clear() {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> headerSet() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new),  \n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void forEach(BiConsumer<? super String, ? super List<String>> action) {\n\t\tfor (String name : this.headers.keySet()) {\n\t\t\tList<String> values = this.headers.get(name);\n\t\t\taction.accept(name, (values != null ? Collections.unmodifiableList(values) : Collections.emptyList()));\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "af04762533695a194329c5db92d8f821ba635c51e8c57c49e701674451fd6220", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "remove-comments", "level": 1, "line_count": 171, "local_path": "comments/remove-comments/I01__spring-framework__ReadOnlyHttpHeaders__89a2fa4e.java", "order": 1, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 348, "comments_removed": 3}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-440989a2fa4e-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1276, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-68a78ab33a0a-I02", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n/**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> hea) {\n\t\tsuper(hea);\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType get2() {\n\t\tif (this.cachedContentType != null) {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t\telse {\n\t\t\tMediaType content = super.getContentType();\n\t\t\tthis.cachedContentType = content;\n\t\t\treturn content;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> get3() {\n\t\tif (this.cachedAccept != null) {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t\telse {\n\t\t\tList<MediaType> acc = super.getAccept();\n\t\t\tthis.cachedAccept = acc;\n\t\t\treturn acc;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clear2() {\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> get(String header) {\n\t\tList<String> val = this.headers.get(header);\n\t\treturn (val != null ? Collections.unmodifiableList(val) : null);\n\t}\n\n\t@Override\n\tpublic void add(String header2, @Nullable String header3) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void add2(String key, List<? extends String> header4) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void add2(HttpHeaders val2) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void set(String header5, @Nullable String header6) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void set2(Map<String, String> val3) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> to() {\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> as() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> as2() {\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> header() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> put(String key, List<String> val4) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> put2(String header7, List<String> header8) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void put3(@Nullable HttpHeaders val5) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void put3(Map<? extends String, ? extends List<String>> hea2) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> rem(String key) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void cle() {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> header2() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void for2(BiConsumer<? super String, ? super List<String>> act) {\n\t\tfor (String nam : this.headers.keySet()) {\n\t\t\tList<String> val6 = this.headers.get(nam);\n\t\t\tact.accept(nam, (val6 != null ? Collections.unmodifiableList(val6) : Collections.emptyList()));\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "177d11928d44523bf499b4b3bfa7d5482e22562a2b33046bff297e41a468f1ee", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "shorten-identifiers", "level": 2, "line_count": 171, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__ReadOnlyHttpHeaders__8ab33a0a.java", "order": 2, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 13, "identifiers_declared": 23, "local_name_collisions_avoided": 13, "method_calls_renamed": 0, "method_declarations_renamed": 17, "method_name_collisions_avoided": 10, "method_name_groups": 19}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-68a78ab33a0a-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1277, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-645fc9b1468d-I03", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n/**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> address) {\n\t\tsuper(address);\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType refreshRequest() {\n\t\tif (this.cachedContentType != null) {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t\telse {\n\t\t\tMediaType sharedOrder = super.getContentType();\n\t\t\tthis.cachedContentType = sharedOrder;\n\t\t\treturn sharedOrder;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> transform() {\n\t\tif (this.cachedAccept != null) {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t\telse {\n\t\t\tList<MediaType> buffer = super.getAccept();\n\t\t\tthis.cachedAccept = buffer;\n\t\t\treturn buffer;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void validateMessage() {\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> join(String sharedUser) {\n\t\tList<String> offset = this.headers.get(sharedUser);\n\t\treturn (offset != null ? Collections.unmodifiableList(offset) : null);\n\t}\n\n\t@Override\n\tpublic void find(String localValue, @Nullable String defaultNode) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void search(String age, List<? extends String> backupWindow) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void search(HttpHeaders result) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void add(String backupPath, @Nullable String primaryData) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void handle(Map<String, String> source) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> validateAccount() {\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> validateRequest() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> validateSession() {\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> sendBalance() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> copy(String flag, List<String> index) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> checkStatus(String localCache, List<String> defaultCache) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void format(@Nullable HttpHeaders status) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void format(Map<? extends String, ? extends List<String>> invoice) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> attach(String date) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void reset() {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> sendEvent() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void readKey(BiConsumer<? super String, ? super List<String>> option) {\n\t\tfor (String mode : this.headers.keySet()) {\n\t\t\tList<String> config = this.headers.get(mode);\n\t\t\toption.accept(mode, (config != null ? Collections.unmodifiableList(config) : Collections.emptyList()));\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "0f88187ae051e666b279588a61149b606c71c8ad759b472ba2bb84c90583d2b8", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "mislead-identifiers", "level": 3, "line_count": 171, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__ReadOnlyHttpHeaders__c9b1468d.java", "order": 3, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 13, "identifiers_declared": 23, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 5, "local_exact_length_matches": 21, "local_random_pool_selections": 23, "local_total_length_difference": 2, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 7, "method_declarations_renamed": 21, "method_exact_length_matches": 13, "method_name_groups": 19, "method_random_pool_selections": 19, "method_total_length_difference": 9}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-645fc9b1468d-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1278, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-8ab205ee7079-I04", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n/**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> a) {\n\t\tsuper(a);\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType a() {\n\t\tif (this.cachedContentType != null) {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t\telse {\n\t\t\tMediaType b = super.getContentType();\n\t\t\tthis.cachedContentType = b;\n\t\t\treturn b;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> b() {\n\t\tif (this.cachedAccept != null) {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t\telse {\n\t\t\tList<MediaType> c = super.getAccept();\n\t\t\tthis.cachedAccept = c;\n\t\t\treturn c;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void c() {\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> d(String d) {\n\t\tList<String> e = this.headers.get(d);\n\t\treturn (e != null ? Collections.unmodifiableList(e) : null);\n\t}\n\n\t@Override\n\tpublic void e(String f, @Nullable String g) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void f(String h, List<? extends String> i) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void f(HttpHeaders j) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void g(String k, @Nullable String l) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void h(Map<String, String> m) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> i() {\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> j() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> k() {\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> l() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> m(String n, List<String> o) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> n(String p, List<String> q) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void o(@Nullable HttpHeaders r) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void o(Map<? extends String, ? extends List<String>> s) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> p(String t) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void q() {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> r() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void s(BiConsumer<? super String, ? super List<String>> u) {\n\t\tfor (String v : this.headers.keySet()) {\n\t\t\tList<String> w = this.headers.get(v);\n\t\t\tu.accept(v, (w != null ? Collections.unmodifiableList(w) : Collections.emptyList()));\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "3922623fdb50744e1520c657944587cba09083a3cd667aabc24dba3ea2213a55", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "garble-identifiers", "level": 4, "line_count": 171, "local_path": "identifiers/garble-identifiers/I04__spring-framework__ReadOnlyHttpHeaders__05ee7079.java", "order": 4, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 13, "identifiers_declared": 23, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 21, "method_name_collisions_avoided": 0, "method_name_groups": 19}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-8ab205ee7079-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1279, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-72cd367a8f0b-I05", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n/**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -0x770d260d8836ab5cL;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> headers) {\n\t\tsuper(headers);\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType getContentType() {\n\t\tif (this.cachedContentType != null) {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t\telse {\n\t\t\tMediaType contentType = super.getContentType();\n\t\t\tthis.cachedContentType = contentType;\n\t\t\treturn contentType;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> getAccept() {\n\t\tif (this.cachedAccept != null) {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t\telse {\n\t\t\tList<MediaType> accept = super.getAccept();\n\t\t\tthis.cachedAccept = accept;\n\t\t\treturn accept;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearContentHeaders() {\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> get(String headerName) {\n\t\tList<String> values = this.headers.get(headerName);\n\t\treturn (values != null ? Collections.unmodifiableList(values) : null);\n\t}\n\n\t@Override\n\tpublic void add(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(String key, List<? extends String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void set(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void setAll(Map<String, String> values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> toSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> asSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> asMultiValueMap() {\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> headerNames() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> put(String key, List<String> value) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> putIfAbsent(String headerName, List<String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(@Nullable HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(Map<? extends String, ? extends List<String>> headers) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> remove(String key) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void clear() {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> headerSet() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void forEach(BiConsumer<? super String, ? super List<String>> action) {\n\t\tfor (String name : this.headers.keySet()) {\n\t\t\tList<String> values = this.headers.get(name);\n\t\t\taction.accept(name, (values != null ? Collections.unmodifiableList(values) : Collections.emptyList()));\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "3770832f2e160ae978b0963f2ad5cbe06b4db6ff85bd434cf14947959bdbfc5a", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "encode-integer-literals", "level": 5, "line_count": 171, "local_path": "expressions/encode-integer-literals/I05__spring-framework__ReadOnlyHttpHeaders__367a8f0b.java", "order": 5, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 1}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-72cd367a8f0b-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1280, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d31fdedc58aa-I06", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n/**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> headers) {\n\t\tsuper(headers);\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType getContentType() {\n\t\tif (!((this.cachedContentType != null))) {\n\t\t\tMediaType contentType = super.getContentType();\n\t\t\tthis.cachedContentType = contentType;\n\t\t\treturn contentType;\n\t\t} else {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> getAccept() {\n\t\tif (!((this.cachedAccept != null))) {\n\t\t\tList<MediaType> accept = super.getAccept();\n\t\t\tthis.cachedAccept = accept;\n\t\t\treturn accept;\n\t\t} else {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearContentHeaders() {\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> get(String headerName) {\n\t\tList<String> values = this.headers.get(headerName);\n\t\treturn (values != null ? Collections.unmodifiableList(values) : null);\n\t}\n\n\t@Override\n\tpublic void add(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(String key, List<? extends String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void set(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void setAll(Map<String, String> values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> toSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> asSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> asMultiValueMap() {\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> headerNames() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> put(String key, List<String> value) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> putIfAbsent(String headerName, List<String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(@Nullable HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(Map<? extends String, ? extends List<String>> headers) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> remove(String key) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void clear() {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> headerSet() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void forEach(BiConsumer<? super String, ? super List<String>> action) {\n\t\tfor (String name : this.headers.keySet()) {\n\t\t\tList<String> values = this.headers.get(name);\n\t\t\taction.accept(name, (values != null ? Collections.unmodifiableList(values) : Collections.emptyList()));\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "ec508097274141caf5aba07f25e8e8909503e02537b7a02567d1464f1473061a", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "invert-conditions", "level": 6, "line_count": 169, "local_path": "expressions/invert-conditions/I06__spring-framework__ReadOnlyHttpHeaders__dedc58aa.java", "order": 6, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-d31fdedc58aa-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1281, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d59d39eada4d-I07", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n/**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> headers) {\n\t\tsuper(headers);\nif (((0x112F ^ 0x112F) != 0)) { throw new AssertionError(); }\n\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType getContentType() {\nif (((0xF92D ^ 0xF92D) != 0)) { throw new AssertionError(); }\n\n\t\tif (this.cachedContentType != null) {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t\telse {\n\t\t\tMediaType contentType = super.getContentType();\n\t\t\tthis.cachedContentType = contentType;\n\t\t\treturn contentType;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> getAccept() {\nif (((0xCD27 ^ 0xCD27) != 0)) { throw new AssertionError(); }\n\n\t\tif (this.cachedAccept != null) {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t\telse {\n\t\t\tList<MediaType> accept = super.getAccept();\n\t\t\tthis.cachedAccept = accept;\n\t\t\treturn accept;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearContentHeaders() {\nif (((0xBBAD ^ 0xBBAD) != 0)) { throw new AssertionError(); }\n\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> get(String headerName) {\nif (((0xF6D4 ^ 0xF6D4) != 0)) { throw new AssertionError(); }\n\n\t\tList<String> values = this.headers.get(headerName);\n\t\treturn (values != null ? Collections.unmodifiableList(values) : null);\n\t}\n\n\t@Override\n\tpublic void add(String headerName, @Nullable String headerValue) {\nif (((0x546C ^ 0x546C) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(String key, List<? extends String> headerValues) {\nif (((0x1443 ^ 0x1443) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(HttpHeaders values) {\nif (((0x5F4A ^ 0x5F4A) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void set(String headerName, @Nullable String headerValue) {\nif (((0x1DB8 ^ 0x1DB8) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void setAll(Map<String, String> values) {\nif (((0xE1ED ^ 0xE1ED) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> toSingleValueMap() {\nif (((0x91AF ^ 0x91AF) != 0)) { throw new AssertionError(); }\n\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> asSingleValueMap() {\nif (((0x3390 ^ 0x3390) != 0)) { throw new AssertionError(); }\n\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> asMultiValueMap() {\nif (((0x6C5C ^ 0x6C5C) != 0)) { throw new AssertionError(); }\n\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> headerNames() {\nif (((0xB7CE ^ 0xB7CE) != 0)) { throw new AssertionError(); }\n\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> put(String key, List<String> value) {\nif (((0xF52B ^ 0xF52B) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> putIfAbsent(String headerName, List<String> headerValues) {\nif (((0x4DE5 ^ 0x4DE5) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(@Nullable HttpHeaders values) {\nif (((0x34A7 ^ 0x34A7) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(Map<? extends String, ? extends List<String>> headers) {\nif (((0xB730 ^ 0xB730) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> remove(String key) {\nif (((0xEF24 ^ 0xEF24) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void clear() {\nif (((0x7B98 ^ 0x7B98) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> headerSet() {\nif (((0x8229 ^ 0x8229) != 0)) { throw new AssertionError(); }\n\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void forEach(BiConsumer<? super String, ? super List<String>> action) {\nif (((0x79E2 ^ 0x79E2) != 0)) { throw new AssertionError(); }\n\n\t\tfor (String name : this.headers.keySet()) {\n\t\t\tList<String> values = this.headers.get(name);\n\t\t\taction.accept(name, (values != null ? Collections.unmodifiableList(values) : Collections.emptyList()));\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "e0a9b9fa9919827cd76d82e598988a8380cee129654eb7cffd630111f32f461a", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "insert-dead-branches", "level": 7, "line_count": 215, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__ReadOnlyHttpHeaders__39eada4d.java", "order": 7, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 22}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-d59d39eada4d-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1282, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-82d47fa2de0c-I08", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n/**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> headers) {\n\t\tsuper(headers);\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType getContentType() {\n\t\tif (this.cachedContentType != null) {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t\telse {\n\t\t\tMediaType contentType = super.getContentType();\n\t\t\tthis.cachedContentType = contentType;\n\t\t\treturn contentType;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> getAccept() {\n\t\tif (this.cachedAccept != null) {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t\telse {\n\t\t\tList<MediaType> accept = super.getAccept();\n\t\t\tthis.cachedAccept = accept;\n\t\t\treturn accept;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearContentHeaders() {\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> get(String headerName) {\n\t\tList<String> values = this.headers.get(headerName);\n\t\treturn (values != null ? Collections.unmodifiableList(values) : null);\n\t}\n\n\t@Override\n\tpublic void add(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(String key, List<? extends String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void set(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void setAll(Map<String, String> values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> toSingleValueMap() {\n{\n  int startingPosition = 2;\n  int endingPosition = 9;\n  int travelDistance = endingPosition - startingPosition;\n  if (travelDistance < 0) {\n    travelDistance = -travelDistance;\n  }\n}\n\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> asSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> asMultiValueMap() {\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> headerNames() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> put(String key, List<String> value) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> putIfAbsent(String headerName, List<String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(@Nullable HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(Map<? extends String, ? extends List<String>> headers) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> remove(String key) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void clear() {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> headerSet() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void forEach(BiConsumer<? super String, ? super List<String>> action) {\n\t\tfor (String name : this.headers.keySet()) {\n\t\t\tList<String> values = this.headers.get(name);\n\t\t\taction.accept(name, (values != null ? Collections.unmodifiableList(values) : Collections.emptyList()));\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "94c41d6101851a91213a45c687d2022fb49291d0991b6a4bc1a08108b13cec08", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 180, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__ReadOnlyHttpHeaders__7fa2de0c.java", "order": 8, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 9}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-82d47fa2de0c-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1283, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ac6573e19a1f-I09", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n/**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> headers) {\n\t\tsuper(headers);\n{int lI0O_81d1bec6=0x1B9B;lI0O_81d1bec6=((lI0O_81d1bec6^0x1B9B)|0)&-1;if(((lI0O_81d1bec6&1)==1)){lI0O_81d1bec6^=lI0O_81d1bec6;}}\n\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType getContentType() {\n\t\tif (this.cachedContentType != null) {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t\telse {\n\t\t\tMediaType contentType = super.getContentType();\n\t\t\tthis.cachedContentType = contentType;\n\t\t\treturn contentType;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> getAccept() {\n\t\tif (this.cachedAccept != null) {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t\telse {\n\t\t\tList<MediaType> accept = super.getAccept();\n\t\t\tthis.cachedAccept = accept;\n\t\t\treturn accept;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearContentHeaders() {\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> get(String headerName) {\n\t\tList<String> values = this.headers.get(headerName);\n\t\treturn (values != null ? Collections.unmodifiableList(values) : null);\n\t}\n\n\t@Override\n\tpublic void add(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(String key, List<? extends String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void set(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void setAll(Map<String, String> values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> toSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> asSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> asMultiValueMap() {\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> headerNames() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> put(String key, List<String> value) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> putIfAbsent(String headerName, List<String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(@Nullable HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(Map<? extends String, ? extends List<String>> headers) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> remove(String key) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void clear() {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> headerSet() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void forEach(BiConsumer<? super String, ? super List<String>> action) {\n\t\tfor (String name : this.headers.keySet()) {\n\t\t\tList<String> values = this.headers.get(name);\n\t\t\taction.accept(name, (values != null ? Collections.unmodifiableList(values) : Collections.emptyList()));\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "ac83ee6d428e0017babb40e1d70ead2d40b7442f6ea8e7f809501b187a18b16d", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 173, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__ReadOnlyHttpHeaders__73e19a1f.java", "order": 9, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 0}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-ac6573e19a1f-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1284, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c573c67d6dcd-I10", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable; import org.springframework.util.CollectionUtils; import org.springframework.util.MultiValueMap; /**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType; @SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> headers) {\n\t\tsuper(headers);\n\t}\n\n\n\t@Override public @Nullable MediaType getContentType() { if (this.cachedContentType != null) { return this.cachedContentType; } else {\n\t\t\tMediaType contentType = super.getContentType(); this.cachedContentType = contentType;\n\t\t\treturn contentType;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> getAccept() {\n\t\tif (this.cachedAccept != null) { return this.cachedAccept; }\n\t\telse {\n\t\t\tList<MediaType> accept = super.getAccept();\n\t\t\tthis.cachedAccept = accept;\n\t\t\treturn accept;\n\t\t} } @Override public void clearContentHeaders() {\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> get(String headerName) {\n\t\tList<String> values = this.headers.get(headerName);\n\t\treturn (values != null ? Collections.unmodifiableList(values) : null); } @Override\n\tpublic void add(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException(); }\n\n\t@Override public void addAll(String key, List<? extends String> headerValues) {\n\t\tthrow new UnsupportedOperationException(); } @Override\n\tpublic void addAll(HttpHeaders values) { throw new UnsupportedOperationException();\n\t} @Override\n\tpublic void set(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void setAll(Map<String, String> values) { throw new UnsupportedOperationException();\n\t} @Override\n\tpublic Map<String, String> toSingleValueMap() { return Collections.unmodifiableMap(this.headers.toSingleValueMap()); } @SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> asSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap()); }\n\n\t@SuppressWarnings(\"removal\")\n\t@Override @Deprecated(since = \"7.0\", forRemoval = true) public MultiValueMap<String, String> asMultiValueMap() { return CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> headerNames() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override public List<String> put(String key, List<String> value) {\n\t\tthrow new UnsupportedOperationException();\n\t} @Override\n\tpublic @Nullable List<String> putIfAbsent(String headerName, List<String> headerValues) {\n\t\tthrow new UnsupportedOperationException(); }\n\n\t@Override\n\tpublic void putAll(@Nullable HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException(); }\n\n\t@Override public void putAll(Map<? extends String, ? extends List<String>> headers) { throw new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> remove(String key) { throw new UnsupportedOperationException();\n\t} @Override\n\tpublic void clear() { throw new UnsupportedOperationException(); }\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> headerSet() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void forEach(BiConsumer<? super String, ? super List<String>> action) { for (String name : this.headers.keySet()) {\n\t\t\tList<String> values = this.headers.get(name);\n\t\t\taction.accept(name, (values != null ? Collections.unmodifiableList(values) : Collections.emptyList())); }\n\t} }\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "0437cf2dcdf776b031522e174bea0c12c24d276dfad4b475a77aed4673a479c7", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "partially-compact-layout", "level": 10, "line_count": 109, "local_path": "layout/partially-compact-layout/I10__spring-framework__ReadOnlyHttpHeaders__c67d6dcd.java", "order": 10, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 129, "line_break_groups_removed": 51, "line_breaks_removed": 62, "whitespace_characters_removed": 71}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-c573c67d6dcd-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1285, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c8ec7d0a6acf-I11", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n/**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> headers) {\n\t\tsuper(headers);\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType getContentType() {\n\t\tif (this.cachedContentType != null) {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t\telse {\n\t\t\tMediaType contentType = super.getContentType();\n\t\t\tthis.cachedContentType = contentType;\n\t\t\treturn contentType;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> getAccept() {\n\t\tif (this.cachedAccept != null) {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t\telse {\n\t\t\tList<MediaType> accept = super.getAccept();\n\t\t\tthis.cachedAccept = accept;\n\t\t\treturn accept;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearContentHeaders() {\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> get(String headerName) {\n\t\tList<String> values = this.headers.get(headerName);\n\t\treturn (values != null ? Collections.unmodifiableList(values) : null);\n\t}\n\n\t@Override\n\tpublic void add(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(String key, List<? extends String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void set(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void setAll(Map<String, String> values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> toSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> asSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> asMultiValueMap() {\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> headerNames() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> put(String key, List<String> value) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> putIfAbsent(String headerName, List<String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(@Nullable HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(Map<? extends String, ? extends List<String>> headers) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> remove(String key) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void clear() {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> headerSet() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void forEach(BiConsumer<? super String, ? super List<String>> action) {\n\t\tfor (String name : this.headers.keySet()) {\n\t\t\tList<String> values = this.headers.get(name);\n\t\t\taction.accept(name, (values != null ? Collections.unmodifiableList(values) : Collections.emptyList()));\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 171, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__ReadOnlyHttpHeaders__7d0a6acf.java", "order": 11, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-c8ec7d0a6acf-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1286, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e64a0aab2068-I12", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n/**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> headers) {\n\t\tsuper(headers);\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType getContentType() {\n\t\tif (this.cachedContentType != null) {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t\telse {\n\t\t\tMediaType contentType = super.getContentType();\n\t\t\tthis.cachedContentType = contentType;\n\t\t\treturn contentType;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> getAccept() {\n\t\tif (this.cachedAccept != null) {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t\telse {\n\t\t\tList<MediaType> accept = super.getAccept();\n\t\t\tthis.cachedAccept = accept;\n\t\t\treturn accept;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearContentHeaders() {\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> get(String headerName) {\n\t\tList<String> values = this.headers.get(headerName);\n\t\treturn (values != null ? Collections.unmodifiableList(values) : null);\n\t}\n\n\t@Override\n\tpublic void add(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(String key, List<? extends String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void set(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void setAll(Map<String, String> values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> toSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> asSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> asMultiValueMap() {\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> headerNames() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> put(String key, List<String> value) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> putIfAbsent(String headerName, List<String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(@Nullable HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(Map<? extends String, ? extends List<String>> headers) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> remove(String key) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void clear() {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> headerSet() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void forEach(BiConsumer<? super String, ? super List<String>> action) {\n\t\tfor (String name : this.headers.keySet()) {\n\t\t\tList<String> values = this.headers.get(name);\n\t\t\taction.accept(name, (values != null ? Collections.unmodifiableList(values) : Collections.emptyList()));\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 171, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__ReadOnlyHttpHeaders__0aab2068.java", "order": 12, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-e64a0aab2068-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1287, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c55fd25596d9-I13", "source": "package org.springframework.http;\nimport java.util.AbstractMap.SimpleImmutableEntry;\nimport java.util.Collections;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.function.BiConsumer;\nimport java.util.stream.Collectors;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MultiValueMap;\n\n/**\n * {@code HttpHeaders} variant that can only be read, not written to.\n *\n * <p>This caches the parsed representations of the \"Accept\" and \"Content-Type\"\n * headers and will get out of sync with the backing map if it is mutated at runtime.\n *\n * @author Brian Clozel\n * @author Sam Brannen\n * @since 5.1.1\n */\nclass ReadOnlyHttpHeaders extends HttpHeaders {\n\n\tprivate static final long serialVersionUID = -8578554704772377436L;\n\n\n\tprivate @Nullable MediaType cachedContentType;\n\n\t@SuppressWarnings(\"serial\")\n\tprivate @Nullable List<MediaType> cachedAccept;\n\n\n\tReadOnlyHttpHeaders(MultiValueMap<String, String> headers) {\n\t\tsuper(headers);\n\t}\n\n\n\t@Override\n\tpublic @Nullable MediaType getContentType() {\n\t\tif (this.cachedContentType != null) {\n\t\t\treturn this.cachedContentType;\n\t\t}\n\t\telse {\n\t\t\tMediaType contentType = super.getContentType();\n\t\t\tthis.cachedContentType = contentType;\n\t\t\treturn contentType;\n\t\t}\n\t}\n\n\t@Override\n\tpublic List<MediaType> getAccept() {\n\t\tif (this.cachedAccept != null) {\n\t\t\treturn this.cachedAccept;\n\t\t}\n\t\telse {\n\t\t\tList<MediaType> accept = super.getAccept();\n\t\t\tthis.cachedAccept = accept;\n\t\t\treturn accept;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void clearContentHeaders() {\n\t\t// No-op.\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> get(String headerName) {\n\t\tList<String> values = this.headers.get(headerName);\n\t\treturn (values != null ? Collections.unmodifiableList(values) : null);\n\t}\n\n\t@Override\n\tpublic void add(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(String key, List<? extends String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void addAll(HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void set(String headerName, @Nullable String headerValue) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void setAll(Map<String, String> values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Map<String, String> toSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.toSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic Map<String, String> asSingleValueMap() {\n\t\treturn Collections.unmodifiableMap(this.headers.asSingleValueMap());\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\t@Override\n\t@Deprecated(since = \"7.0\", forRemoval = true)\n\tpublic MultiValueMap<String, String> asMultiValueMap() {\n\t\treturn CollectionUtils.unmodifiableMultiValueMap(this.headers);\n\t}\n\n\t@Override\n\tpublic Set<String> headerNames() {\n\t\treturn Collections.unmodifiableSet(super.headerNames());\n\t}\n\n\t@Override\n\tpublic List<String> put(String key, List<String> value) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic @Nullable List<String> putIfAbsent(String headerName, List<String> headerValues) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(@Nullable HttpHeaders values) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void putAll(Map<? extends String, ? extends List<String>> headers) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic List<String> remove(String key) {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic void clear() {\n\t\tthrow new UnsupportedOperationException();\n\t}\n\n\t@Override\n\tpublic Set<Entry<String, List<String>>> headerSet() {\n\t\treturn super.headerSet().stream().map(SimpleImmutableEntry::new)\n\t\t\t\t.collect(Collectors.collectingAndThen(\n\t\t\t\t\t\tCollectors.toCollection(LinkedHashSet::new), // Retain original ordering of entries\n\t\t\t\t\t\tCollections::unmodifiableSet));\n\t}\n\n\t@Override\n\tpublic void forEach(BiConsumer<? super String, ? super List<String>> action) {\n\t\t{\n\t\t  java.util.Iterator<?> loopIterator = (this.headers.keySet()).iterator();\n\t\t  while (loopIterator.hasNext()) {\n\t\t    String name = (String) loopIterator.next();\n\t\t    List<String> values = this.headers.get(name);\n\t\t    action.accept(name, (values != null ? Collections.unmodifiableList(values) : Collections.emptyList()));\n\t\t  }\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__ReadOnlyHttpHeaders__dcae3336.java", "base_sample_id": "source-d8822fe962d234ed", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "684e392b098f8afbccc75304bab90b41e54a1723cf62ccbe2e16e1696b301f24", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java", "interference": "lower-for-to-while", "level": 13, "line_count": 175, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__ReadOnlyHttpHeaders__d25596d9.java", "order": 13, "original_content_sha256": "21417d16e8564088cde2992e408c1c5d0be94c94ceac763a5ec91cd379c9caf3", "parent_variant_id": "int-b38bdcae3336-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/ReadOnlyHttpHeaders.java#L34-L190", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 1, "enhanced_for_loops_found": 1, "enhanced_for_loops_lowered_to_while": 1, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 1, "for_loops_lowered_to_while": 1, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "ReadOnlyHttpHeaders", "variant_id": "int-c55fd25596d9-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1288, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dc6a00461111-SRC", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t}\n\n\t/**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */\n\tpublic GsonDecoder(Gson gson, MimeType... mimeTypes) {\n\t\tsuper(mimeTypes);\n\t\tAssert.notNull(gson, \"A Gson instance is required\");\n\t\tthis.gson = gson;\n\t}\n\n\n\t@Override\n\tpublic boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {\n\t\treturn super.canDecode(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object decode(DataBuffer buffer, ResolvableType targetType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(buffer.asInputStream()), targetType.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(buffer);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": null, "level": 0, "line_count": 79, "local_path": "source-original/SRC__spring-framework__GsonDecoder__00461111.java", "order": 0, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-dc6a00461111-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1121, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-5a155803b265-I01", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n\n\n\n\n\n\n\n\n\n\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t\n\n\n\n\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t}\n\n\t\n\n\n\n\n\n\tpublic GsonDecoder(Gson gson, MimeType... mimeTypes) {\n\t\tsuper(mimeTypes);\n\t\tAssert.notNull(gson, \"A Gson instance is required\");\n\t\tthis.gson = gson;\n\t}\n\n\n\t@Override\n\tpublic boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {\n\t\treturn super.canDecode(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object decode(DataBuffer buffer, ResolvableType targetType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(buffer.asInputStream()), targetType.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(buffer);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "202efcc7c1c426f93e45d60e50596fdee17866c5c5a2e00aa89362f3d2668bf7", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "remove-comments", "level": 1, "line_count": 79, "local_path": "comments/remove-comments/I01__spring-framework__GsonDecoder__5803b265.java", "order": 1, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 830, "comments_removed": 3}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-5a155803b265-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1122, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-bbd66b8ffee0-I02", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t}\n\n\t/**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */\n\tpublic GsonDecoder(Gson gso, MimeType... mime) {\n\t\tsuper(mime);\n\t\tAssert.notNull(gso, \"A Gson instance is required\");\n\t\tthis.gson = gso;\n\t}\n\n\n\t@Override\n\tpublic boolean can(ResolvableType element, @Nullable MimeType mime2) {\n\t\treturn super.canDecode(element, mime2) && !CharSequence.class.isAssignableFrom(element.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> dec(Publisher<DataBuffer> input, ResolvableType element2, @Nullable MimeType mime3, @Nullable Map<String, Object> hin) {\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object dec(DataBuffer buf, ResolvableType target, @Nullable MimeType mime4, @Nullable Map<String, Object> hin2) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(buf.asInputStream()), target.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(buf);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "d44a1cb62dd80eaef4d22ce76b60cafaf2b1b5458db55151747f497086328c51", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "shorten-identifiers", "level": 2, "line_count": 79, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__GsonDecoder__6b8ffee0.java", "order": 2, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 9, "identifiers_declared": 12, "local_name_collisions_avoided": 5, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-bbd66b8ffee0-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1123, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ce7ba9f55721-I03", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t}\n\n\t/**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */\n\tpublic GsonDecoder(Gson user, MimeType... nextIndex) {\n\t\tsuper(nextIndex);\n\t\tAssert.notNull(user, \"A Gson instance is required\");\n\t\tthis.gson = user;\n\t}\n\n\n\t@Override\n\tpublic boolean saveState(ResolvableType nextAccount, @Nullable MimeType discount) {\n\t\treturn super.canDecode(nextAccount, discount) && !CharSequence.class.isAssignableFrom(nextAccount.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> search(Publisher<DataBuffer> defaultUser, ResolvableType activeState, @Nullable MimeType schedule, @Nullable Map<String, Object> cache) {\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object search(DataBuffer config, ResolvableType sharedItem, @Nullable MimeType nextData, @Nullable Map<String, Object> event) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(config.asInputStream()), sharedItem.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(config);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "160f215792916ff821ec2b9d41e633cf5ee8452d62f18486e9bbc44f90a57318", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "mislead-identifiers", "level": 3, "line_count": 79, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__GsonDecoder__a9f55721.java", "order": 3, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 9, "identifiers_declared": 12, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 12, "local_random_pool_selections": 12, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 3, "method_exact_length_matches": 2, "method_name_groups": 2, "method_random_pool_selections": 2, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-ce7ba9f55721-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1124, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-918dfb0f3d9f-I04", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t}\n\n\t/**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */\n\tpublic GsonDecoder(Gson a, MimeType... b) {\n\t\tsuper(b);\n\t\tAssert.notNull(a, \"A Gson instance is required\");\n\t\tthis.gson = a;\n\t}\n\n\n\t@Override\n\tpublic boolean a(ResolvableType c, @Nullable MimeType d) {\n\t\treturn super.canDecode(c, d) && !CharSequence.class.isAssignableFrom(c.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> b(Publisher<DataBuffer> e, ResolvableType f, @Nullable MimeType g, @Nullable Map<String, Object> h) {\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object b(DataBuffer i, ResolvableType j, @Nullable MimeType k, @Nullable Map<String, Object> l) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(i.asInputStream()), j.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(i);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "85d8d53d873b0edac6c93400511e5c7bfc0a3a571dba2cd58ce952961b8d0b7a", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "garble-identifiers", "level": 4, "line_count": 79, "local_path": "identifiers/garble-identifiers/I04__spring-framework__GsonDecoder__fb0f3d9f.java", "order": 4, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 9, "identifiers_declared": 12, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 3, "method_name_collisions_avoided": 0, "method_name_groups": 2}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-918dfb0f3d9f-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1125, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c72b0498f144-I05", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t}\n\n\t/**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */\n\tpublic GsonDecoder(Gson gson, MimeType... mimeTypes) {\n\t\tsuper(mimeTypes);\n\t\tAssert.notNull(gson, \"A Gson instance is required\");\n\t\tthis.gson = gson;\n\t}\n\n\n\t@Override\n\tpublic boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {\n\t\treturn super.canDecode(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object decode(DataBuffer buffer, ResolvableType targetType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(buffer.asInputStream()), targetType.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(buffer);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "encode-integer-literals", "level": 5, "line_count": 79, "local_path": "expressions/encode-integer-literals/I05__spring-framework__GsonDecoder__0498f144.java", "order": 5, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-c72b0498f144-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1126, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-b14c5bd4c6eb-I06", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t}\n\n\t/**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */\n\tpublic GsonDecoder(Gson gson, MimeType... mimeTypes) {\n\t\tsuper(mimeTypes);\n\t\tAssert.notNull(gson, \"A Gson instance is required\");\n\t\tthis.gson = gson;\n\t}\n\n\n\t@Override\n\tpublic boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {\n\t\treturn super.canDecode(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object decode(DataBuffer buffer, ResolvableType targetType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(buffer.asInputStream()), targetType.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(buffer);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "invert-conditions", "level": 6, "line_count": 79, "local_path": "expressions/invert-conditions/I06__spring-framework__GsonDecoder__5bd4c6eb.java", "order": 6, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-b14c5bd4c6eb-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1127, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-297d742f112c-I07", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\nif (((0x2B25 ^ 0x2B25) != 0)) { throw new AssertionError(); }\n\n\t}\n\n\t/**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */\n\tpublic GsonDecoder(Gson gson, MimeType... mimeTypes) {\n\t\tsuper(mimeTypes);\nif (((0x1C14 ^ 0x1C14) != 0)) { throw new AssertionError(); }\n\n\t\tAssert.notNull(gson, \"A Gson instance is required\");\n\t\tthis.gson = gson;\n\t}\n\n\n\t@Override\n\tpublic boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {\nif (((0xE622 ^ 0xE622) != 0)) { throw new AssertionError(); }\n\n\t\treturn super.canDecode(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {\nif (((0x867B ^ 0x867B) != 0)) { throw new AssertionError(); }\n\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object decode(DataBuffer buffer, ResolvableType targetType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) throws DecodingException {\nif (((0xF375 ^ 0xF375) != 0)) { throw new AssertionError(); }\n\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(buffer.asInputStream()), targetType.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(buffer);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "739d766c86536dfc1957e1171fdd5f1333ffc105413e30387424f2e6ae1abe86", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "insert-dead-branches", "level": 7, "line_count": 89, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__GsonDecoder__742f112c.java", "order": 7, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 5}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-297d742f112c-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1128, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-04a84dd6046c-I08", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t}\n\n\t/**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */\n\tpublic GsonDecoder(Gson gson, MimeType... mimeTypes) {\n\t\tsuper(mimeTypes);\n{\n  boolean featureEnabled = false;\n  for (int toggleCount = 0; toggleCount < 3; toggleCount++) {\n    featureEnabled = !featureEnabled;\n  }\n}\n\n\t\tAssert.notNull(gson, \"A Gson instance is required\");\n\t\tthis.gson = gson;\n\t}\n\n\n\t@Override\n\tpublic boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {\n\t\treturn super.canDecode(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object decode(DataBuffer buffer, ResolvableType targetType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(buffer.asInputStream()), targetType.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(buffer);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "845fead9b6b26eef1ec38c8e3e7e17f9827849d252eb92d7628a267d429deb23", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 86, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__GsonDecoder__4dd6046c.java", "order": 8, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 6, "readable_template_index": 7}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-04a84dd6046c-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1129, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0dcccf63f789-I09", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t}\n\n\t/**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */\n\tpublic GsonDecoder(Gson gson, MimeType... mimeTypes) {\n\t\tsuper(mimeTypes);\n\t\tAssert.notNull(gson, \"A Gson instance is required\");\n\t\tthis.gson = gson;\n\t}\n\n\n\t@Override\n\tpublic boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {\n{int lI0O_8e7bd551=0,lI0O_84840254=0;while(lI0O_84840254<2){lI0O_8e7bd551^=(lI0O_84840254<<1)^0x6;lI0O_84840254++;}lI0O_8e7bd551^=lI0O_8e7bd551;}\n\n\t\treturn super.canDecode(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object decode(DataBuffer buffer, ResolvableType targetType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(buffer.asInputStream()), targetType.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(buffer);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "fe6341cdd5289dbe0a8a779c819584e13d729afb1edee906ab9e5a08a21aa567", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 81, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__GsonDecoder__cf63f789.java", "order": 9, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 2}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-0dcccf63f789-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1130, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f0f7f29fe579-I10", "source": "package org.springframework.http.codec.json; import java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson; import org.jspecify.annotations.Nullable; import org.reactivestreams.Publisher; import reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType; import org.springframework.core.codec.AbstractDataBufferDecoder; import org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException; import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.DataBufferUtils; import org.springframework.http.MediaType;\nimport org.springframework.util.Assert; import org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t} /**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */ public GsonDecoder(Gson gson, MimeType... mimeTypes) { super(mimeTypes);\n\t\tAssert.notNull(gson, \"A Gson instance is required\"); this.gson = gson;\n\t}\n\n\n\t@Override\n\tpublic boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {\n\t\treturn super.canDecode(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass());\n\t} @Override\n\tpublic Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) { throw new UnsupportedOperationException(\"Stream decoding is currently not supported\"); }\n\n\t@Override public @Nullable Object decode(DataBuffer buffer, ResolvableType targetType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(buffer.asInputStream()), targetType.getType());\n\t\t}\n\t\tfinally { DataBufferUtils.release(buffer);\n\t\t} }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "e362cd9e90361df9901eef635a0c1c53510c2df46a174557c79e23724a8da494", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "partially-compact-layout", "level": 10, "line_count": 57, "local_path": "layout/partially-compact-layout/I10__spring-framework__GsonDecoder__f29fe579.java", "order": 10, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 50, "line_break_groups_removed": 20, "line_breaks_removed": 22, "whitespace_characters_removed": 17}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-f0f7f29fe579-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1131, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-97a4efac6139-I11", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t}\n\n\t/**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */\n\tpublic GsonDecoder(Gson gson, MimeType... mimeTypes) {\n\t\tsuper(mimeTypes);\n\t\tAssert.notNull(gson, \"A Gson instance is required\");\n\t\tthis.gson = gson;\n\t}\n\n\n\t@Override\n\tpublic boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {\n\t\treturn super.canDecode(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object decode(DataBuffer buffer, ResolvableType targetType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(buffer.asInputStream()), targetType.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(buffer);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 79, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__GsonDecoder__efac6139.java", "order": 11, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-97a4efac6139-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1132, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-1bfc63fb6e65-I12", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t}\n\n\t/**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */\n\tpublic GsonDecoder(Gson gson, MimeType... mimeTypes) {\n\t\tsuper(mimeTypes);\n\t\tAssert.notNull(gson, \"A Gson instance is required\");\n\t\tthis.gson = gson;\n\t}\n\n\n\t@Override\n\tpublic boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {\n\t\treturn super.canDecode(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object decode(DataBuffer buffer, ResolvableType targetType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(buffer.asInputStream()), targetType.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(buffer);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 79, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__GsonDecoder__63fb6e65.java", "order": 12, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-1bfc63fb6e65-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1133, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-83adbfbe20b6-I13", "source": "package org.springframework.http.codec.json;\nimport java.io.InputStreamReader;\nimport java.util.Map;\nimport com.google.gson.Gson;\nimport org.jspecify.annotations.Nullable;\nimport org.reactivestreams.Publisher;\nimport reactor.core.publisher.Flux;\nimport org.springframework.core.ResolvableType;\nimport org.springframework.core.codec.AbstractDataBufferDecoder;\nimport org.springframework.core.codec.Decoder;\nimport org.springframework.core.codec.DecodingException;\nimport org.springframework.core.io.buffer.DataBuffer;\nimport org.springframework.core.io.buffer.DataBufferUtils;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\n/**\n * {@link Decoder} that reads a byte stream into JSON and converts it to Objects with\n * <a href=\"https://google.github.io/gson/\">Google Gson</a>.\n * <p>{@code Flux<*>} target types are not available because non-blocking parsing is not supported,\n * so this decoder targets only {@code Mono<*>} types. Attempting to decode to a {@code Flux<*>} will\n * result in a {@link UnsupportedOperationException} being thrown at runtime.\n *\n * @author Brian Clozel\n * @since 7.0\n */\npublic class GsonDecoder extends AbstractDataBufferDecoder<Object> {\n\n\tprivate static final MimeType[] DEFAULT_JSON_MIME_TYPES = new MimeType[] {\n\t\t\tMediaType.APPLICATION_JSON,\n\t\t\tnew MediaType(\"application\", \"*+json\"),\n\t};\n\n\tprivate final Gson gson;\n\n\t/**\n\t * Construct a new decoder using a default {@link Gson} instance\n\t * and the {@code \"application/json\"} and {@code \"application/*+json\"}\n\t * MIME types.\n\t */\n\tpublic GsonDecoder() {\n\t\tthis(new Gson(), DEFAULT_JSON_MIME_TYPES);\n\t}\n\n\t/**\n\t * Construct a new decoder using the given {@link Gson} instance\n\t * and the provided MIME types.\n\t * @param gson the gson instance to use\n\t * @param mimeTypes the mime types the decoder should support\n\t */\n\tpublic GsonDecoder(Gson gson, MimeType... mimeTypes) {\n\t\tsuper(mimeTypes);\n\t\tAssert.notNull(gson, \"A Gson instance is required\");\n\t\tthis.gson = gson;\n\t}\n\n\n\t@Override\n\tpublic boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {\n\t\treturn super.canDecode(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass());\n\t}\n\n\t@Override\n\tpublic Flux<Object> decode(Publisher<DataBuffer> inputStream, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) {\n\t\tthrow new UnsupportedOperationException(\"Stream decoding is currently not supported\");\n\t}\n\n\t@Override\n\tpublic @Nullable Object decode(DataBuffer buffer, ResolvableType targetType, @Nullable MimeType mimeType, @Nullable Map<String, Object> hints) throws DecodingException {\n\t\ttry {\n\t\t\treturn this.gson.fromJson(new InputStreamReader(buffer.asInputStream()), targetType.getType());\n\t\t}\n\t\tfinally {\n\t\t\tDataBufferUtils.release(buffer);\n\t\t}\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__GsonDecoder__00461111.java", "base_sample_id": "source-8ad21ca80d242a13", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java", "interference": "lower-for-to-while", "level": 13, "line_count": 79, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__GsonDecoder__bfbe20b6.java", "order": 13, "original_content_sha256": "f406900a0e40ed8dc9c80fb411fa78b982ab6bcc22e96cde1fc2da7963327342", "parent_variant_id": "int-dc6a00461111-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/codec/json/GsonDecoder.java#L37-L98", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "GsonDecoder", "variant_id": "int-83adbfbe20b6-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1134, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-42d67a97bd1e-SRC", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t}\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper objectMapper) {\n\t\tsuper(objectMapper, MediaType.APPLICATION_CBOR);\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override\n\tpublic void setObjectMapper(ObjectMapper objectMapper) {\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(objectMapper);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": null, "level": 0, "line_count": 61, "local_path": "source-original/SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "order": 0, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-42d67a97bd1e-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1205, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-acfe8b490e9e-I01", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t\n\n\n\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t}\n\n\t\n\n\n\n\n\n\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper objectMapper) {\n\t\tsuper(objectMapper, MediaType.APPLICATION_CBOR);\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t\n\n\n\n\t@Override\n\tpublic void setObjectMapper(ObjectMapper objectMapper) {\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(objectMapper);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "c709db8dba1f84365e129a6e5244a19fafcc729de029b9c4562207a1f9f77c5b", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "remove-comments", "level": 1, "line_count": 61, "local_path": "comments/remove-comments/I01__spring-framework__MappingJackson2CborHttpMessageConverter__8b490e9e.java", "order": 1, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 1319, "comments_removed": 4}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-acfe8b490e9e-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1206, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c14b824bb3ea-I02", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t}\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper object) {\n\t\tsuper(object, MediaType.APPLICATION_CBOR);\n\t\tAssert.isInstanceOf(CBORFactory.class, object.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override\n\tpublic void set(ObjectMapper object2) {\n\t\tAssert.isInstanceOf(CBORFactory.class, object2.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(object2);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b1091caf64061866aab26f246dbeea9b0d7b7303e77bd0c51bde6b49812a0462", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "shorten-identifiers", "level": 2, "line_count": 61, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__MappingJackson2CborHttpMessageConverter__824bb3ea.java", "order": 2, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 2, "local_name_collisions_avoided": 1, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-c14b824bb3ea-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1207, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9143dbc94835-I03", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t}\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper recentConfig) {\n\t\tsuper(recentConfig, MediaType.APPLICATION_CBOR);\n\t\tAssert.isInstanceOf(CBORFactory.class, recentConfig.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override\n\tpublic void validateSession(ObjectMapper primaryEvent) {\n\t\tAssert.isInstanceOf(CBORFactory.class, primaryEvent.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(primaryEvent);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "4872f064b76ae8ec54d51ca24dd71d5797c7e766be2beb1243bb147baf01d2cc", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "mislead-identifiers", "level": 3, "line_count": 61, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__MappingJackson2CborHttpMessageConverter__dbc94835.java", "order": 3, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 2, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 2, "local_random_pool_selections": 2, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 1, "method_exact_length_matches": 1, "method_name_groups": 1, "method_random_pool_selections": 1, "method_total_length_difference": 0}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-9143dbc94835-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1208, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f152c4d9936f-I04", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t}\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper a) {\n\t\tsuper(a, MediaType.APPLICATION_CBOR);\n\t\tAssert.isInstanceOf(CBORFactory.class, a.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override\n\tpublic void a(ObjectMapper b) {\n\t\tAssert.isInstanceOf(CBORFactory.class, b.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(b);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "8de502d879594289452332586eefa03d5fc7d4bd7da6598173fb8385d4b5b657", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "garble-identifiers", "level": 4, "line_count": 61, "local_path": "identifiers/garble-identifiers/I04__spring-framework__MappingJackson2CborHttpMessageConverter__c4d9936f.java", "order": 4, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 4, "identifiers_declared": 2, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-f152c4d9936f-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1209, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-d5601936f1e7-I05", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t}\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper objectMapper) {\n\t\tsuper(objectMapper, MediaType.APPLICATION_CBOR);\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override\n\tpublic void setObjectMapper(ObjectMapper objectMapper) {\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(objectMapper);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "encode-integer-literals", "level": 5, "line_count": 61, "local_path": "expressions/encode-integer-literals/I05__spring-framework__MappingJackson2CborHttpMessageConverter__1936f1e7.java", "order": 5, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-d5601936f1e7-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1210, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ffb2eb32d094-I06", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t}\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper objectMapper) {\n\t\tsuper(objectMapper, MediaType.APPLICATION_CBOR);\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override\n\tpublic void setObjectMapper(ObjectMapper objectMapper) {\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(objectMapper);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "invert-conditions", "level": 6, "line_count": 61, "local_path": "expressions/invert-conditions/I06__spring-framework__MappingJackson2CborHttpMessageConverter__eb32d094.java", "order": 6, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-ffb2eb32d094-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1211, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-97e2f06084b7-I07", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\nif (((0x3057 ^ 0x3057) != 0)) { throw new AssertionError(); }\n\n\t}\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper objectMapper) {\n\t\tsuper(objectMapper, MediaType.APPLICATION_CBOR);\nif (((0x184F ^ 0x184F) != 0)) { throw new AssertionError(); }\n\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override\n\tpublic void setObjectMapper(ObjectMapper objectMapper) {\nif (((0xAF70 ^ 0xAF70) != 0)) { throw new AssertionError(); }\n\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(objectMapper);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "78cee1b7a3fd0ec6131ec51295b73dbfffd997571d3e1598f665e3a673fbec14", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "insert-dead-branches", "level": 7, "line_count": 67, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__MappingJackson2CborHttpMessageConverter__f06084b7.java", "order": 7, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 3}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-97e2f06084b7-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1212, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9206c0d41636-I08", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t}\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper objectMapper) {\n\t\tsuper(objectMapper, MediaType.APPLICATION_CBOR);\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override\n\tpublic void setObjectMapper(ObjectMapper objectMapper) {\n{\n  int evenNumberCount = 0;\n  for (int candidateNumber = 0; candidateNumber < 6; candidateNumber++) {\n    if (candidateNumber % 2 == 0) {\n      evenNumberCount++;\n    }\n  }\n}\n\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(objectMapper);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "024fc69736bd0846f548d864e4d78ecdbf0ac0cef0ca2f50b4dd606821ddc861", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 70, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__MappingJackson2CborHttpMessageConverter__c0d41636.java", "order": 8, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 2}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-9206c0d41636-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1213, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2725ac0c0c56-I09", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t}\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper objectMapper) {\n\t\tsuper(objectMapper, MediaType.APPLICATION_CBOR);\n{int lI0O_49b9d68c=0xF46C;lI0O_49b9d68c=(lI0O_49b9d68c<<1)^(lI0O_49b9d68c>>>1);lI0O_49b9d68c&=0;}\n\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override\n\tpublic void setObjectMapper(ObjectMapper objectMapper) {\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(objectMapper);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "f98e065e7a8d2ad4bd666adec5caa08167066aea9e2a10a5dc46f2ac8cb3227b", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 63, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__MappingJackson2CborHttpMessageConverter__ac0c0c56.java", "order": 9, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 3}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-2725ac0c0c56-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1214, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e3da9e0dc666-I10", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory; import org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter { /**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */ public MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t} /**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper objectMapper) { super(objectMapper, MediaType.APPLICATION_CBOR); Assert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\"); }\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override public void setObjectMapper(ObjectMapper objectMapper) {\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(objectMapper); }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "401ed57bcadde48eaf6a816524599e4cbccce06432dd107bc54bb152bd207ad7", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "partially-compact-layout", "level": 10, "line_count": 49, "local_path": "layout/partially-compact-layout/I10__spring-framework__MappingJackson2CborHttpMessageConverter__9e0dc666.java", "order": 10, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 26, "line_break_groups_removed": 10, "line_breaks_removed": 12, "whitespace_characters_removed": 12}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-e3da9e0dc666-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1215, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-dda318cf9d9e-I11", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t}\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper objectMapper) {\n\t\tsuper(objectMapper, MediaType.APPLICATION_CBOR);\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override\n\tpublic void setObjectMapper(ObjectMapper objectMapper) {\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(objectMapper);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 61, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__MappingJackson2CborHttpMessageConverter__18cf9d9e.java", "order": 11, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-dda318cf9d9e-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1216, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-470667e8dcdc-I12", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t}\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper objectMapper) {\n\t\tsuper(objectMapper, MediaType.APPLICATION_CBOR);\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override\n\tpublic void setObjectMapper(ObjectMapper objectMapper) {\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(objectMapper);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 61, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__MappingJackson2CborHttpMessageConverter__67e8dcdc.java", "order": 12, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-470667e8dcdc-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1217, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-71b266082a4f-I13", "source": "package org.springframework.http.converter.cbor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.cbor.CBORFactory;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\nimport org.springframework.util.Assert;\n\n/**\n * Implementation of {@link org.springframework.http.converter.HttpMessageConverter\n * HttpMessageConverter} that can read and write the <a href=\"https://cbor.io/\">CBOR</a>\n * data format using <a href=\"https://github.com/FasterXML/jackson-dataformats-binary/tree/master/cbor\">\n * the dedicated Jackson 2.x extension</a>.\n *\n * <p>By default, this converter supports the {@link MediaType#APPLICATION_CBOR_VALUE}\n * media type. This can be overridden by setting the {@link #setSupportedMediaTypes\n * supportedMediaTypes} property.\n *\n * <p>The default constructor uses the default configuration provided by\n * {@link Jackson2ObjectMapperBuilder}.\n *\n * @author Sebastien Deleuze\n * @since 5.0\n * @deprecated since 7.0 in favor of {@link JacksonCborHttpMessageConverter}\n */\n@Deprecated(since = \"7.0\", forRemoval = true)\n@SuppressWarnings(\"removal\")\npublic class MappingJackson2CborHttpMessageConverter extends AbstractJackson2HttpMessageConverter {\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} using the\n\t * default configuration provided by {@code Jackson2ObjectMapperBuilder}.\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter() {\n\t\tthis(Jackson2ObjectMapperBuilder.cbor().build());\n\t}\n\n\t/**\n\t * Construct a new {@code MappingJackson2CborHttpMessageConverter} with a\n\t * custom {@link ObjectMapper} (must be configured with a {@code CBORFactory}\n\t * instance).\n\t * <p>You can use {@link Jackson2ObjectMapperBuilder} to build it easily.\n\t * @see Jackson2ObjectMapperBuilder#cbor()\n\t */\n\tpublic MappingJackson2CborHttpMessageConverter(ObjectMapper objectMapper) {\n\t\tsuper(objectMapper, MediaType.APPLICATION_CBOR);\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t}\n\n\n\t/**\n\t * {@inheritDoc}\n\t * <p>The {@code ObjectMapper} must be configured with a {@code CBORFactory} instance.\n\t */\n\t@Override\n\tpublic void setObjectMapper(ObjectMapper objectMapper) {\n\t\tAssert.isInstanceOf(CBORFactory.class, objectMapper.getFactory(), \"CBORFactory required\");\n\t\tsuper.setObjectMapper(objectMapper);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__MappingJackson2CborHttpMessageConverter__7a97bd1e.java", "base_sample_id": "source-5b69b8f9cc015022", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java", "interference": "lower-for-to-while", "level": 13, "line_count": 61, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__MappingJackson2CborHttpMessageConverter__66082a4f.java", "order": 13, "original_content_sha256": "5c8945208ee3988cda4d5dc55e66864816e4184de23c8c39df2ef0070db84fd2", "parent_variant_id": "int-42d67a97bd1e-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-web/src/main/java/org/springframework/http/converter/cbor/MappingJackson2CborHttpMessageConverter.java#L27-L79", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "MappingJackson2CborHttpMessageConverter", "variant_id": "int-71b266082a4f-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1218, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7ba291b34ffd-SRC", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic interface SockJsFrameFormat {\n\n\tString format(SockJsFrame frame);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": null, "level": 0, "line_count": 22, "local_path": "source-original/SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "order": 0, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "original", "transformation_stats": {}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-7ba291b34ffd-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1317, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7c2799abb981-I01", "source": "package org.springframework.web.socket.sockjs.frame;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npublic interface SockJsFrameFormat {\n\n\tString format(SockJsFrame frame);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "73e923673fff01f77b65fea53c15ab32ef1dd68f26f4e34313b13cbb04e90c6a", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "remove-comments", "level": 1, "line_count": 22, "local_path": "comments/remove-comments/I01__spring-framework__SockJsFrameFormat__99abb981.java", "order": 1, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 719, "comments_removed": 1}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-7c2799abb981-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1318, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-7f728a119d15-I02", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic interface SockJsFrameFormat {\n\n\tString for2(SockJsFrame fra);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "472bc30e22c0380d4d9ad1e931c2f53cd9e9320e2eb1edfe966adc260a7d97fd", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "shorten-identifiers", "level": 2, "line_count": 22, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__SockJsFrameFormat__8a119d15.java", "order": 2, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 1, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 1, "method_name_groups": 1}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-7f728a119d15-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1319, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e14ee86bdb32-I03", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic interface SockJsFrameFormat {\n\n\tString update(SockJsFrame event);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b88d2fac2dec2ce4f345a4fe49b46f86680b13f74bceb19efa0eb348724a4403", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "mislead-identifiers", "level": 3, "line_count": 22, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__SockJsFrameFormat__e86bdb32.java", "order": 3, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 1, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 0, "local_exact_length_matches": 1, "local_random_pool_selections": 1, "local_total_length_difference": 0, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 0, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 0, "method_declarations_renamed": 1, "method_exact_length_matches": 1, "method_name_groups": 1, "method_random_pool_selections": 1, "method_total_length_difference": 0}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-e14ee86bdb32-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1320, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-15aafc7798c3-I04", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic interface SockJsFrameFormat {\n\n\tString a(SockJsFrame a);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "84c0c7c5d6000a499d3ee14aca7ffc7a53d8e9440e8aa1b18296835d8f2a6f84", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "garble-identifiers", "level": 4, "line_count": 22, "local_path": "identifiers/garble-identifiers/I04__spring-framework__SockJsFrameFormat__fc7798c3.java", "order": 4, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 0, "identifiers_declared": 1, "local_name_collisions_avoided": 0, "method_calls_renamed": 0, "method_declarations_renamed": 1, "method_name_collisions_avoided": 0, "method_name_groups": 1}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-15aafc7798c3-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1321, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ff2ffea39427-I05", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic interface SockJsFrameFormat {\n\n\tString format(SockJsFrame frame);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "encode-integer-literals", "level": 5, "line_count": 22, "local_path": "expressions/encode-integer-literals/I05__spring-framework__SockJsFrameFormat__fea39427.java", "order": 5, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-ff2ffea39427-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1322, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-3bb746968f2a-I06", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic interface SockJsFrameFormat {\n\n\tString format(SockJsFrame frame);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "invert-conditions", "level": 6, "line_count": 22, "local_path": "expressions/invert-conditions/I06__spring-framework__SockJsFrameFormat__46968f2a.java", "order": 6, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 0}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-3bb746968f2a-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1323, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-ab75a09d0b6c-I07", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic interface SockJsFrameFormat {\n\n\tString format(SockJsFrame frame);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "insert-dead-branches", "level": 7, "line_count": 22, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__SockJsFrameFormat__a09d0b6c.java", "order": 7, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 0}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-ab75a09d0b6c-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1324, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-a889992c716b-I08", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic interface SockJsFrameFormat {\n\n\tString format(SockJsFrame frame);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 22, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__SockJsFrameFormat__992c716b.java", "order": 8, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 0, "readable_lines_injected": 0, "readable_template_index": -1}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-a889992c716b-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1325, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6c6756035c44-I09", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic interface SockJsFrameFormat {\n\n\tString format(SockJsFrame frame);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 22, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__SockJsFrameFormat__56035c44.java", "order": 9, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 0, "low_readability_template_index": -1}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-6c6756035c44-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1326, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e99c2288310b-I10", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */ public interface SockJsFrameFormat {\n\n\tString format(SockJsFrame frame);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "387f13051b29eefa2e0182d8a0d6f28e71b5ec1ff39f13cd9d03d3379be84d44", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "partially-compact-layout", "level": 10, "line_count": 21, "local_path": "layout/partially-compact-layout/I10__spring-framework__SockJsFrameFormat__2288310b.java", "order": 10, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 4, "line_break_groups_removed": 1, "line_breaks_removed": 1, "whitespace_characters_removed": 0}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-e99c2288310b-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1327, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-45e88f79f4d5-I11", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic interface SockJsFrameFormat {\n\n\tString format(SockJsFrame frame);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 22, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__SockJsFrameFormat__8f79f4d5.java", "order": 11, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-45e88f79f4d5-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1328, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-56e4df92c34f-I12", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic interface SockJsFrameFormat {\n\n\tString format(SockJsFrame frame);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 22, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__SockJsFrameFormat__df92c34f.java", "order": 12, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 0, "intermediate_variables_available": 0, "intermediate_variables_inlined": 0, "target_fraction_percent": 100}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-56e4df92c34f-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1329, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-e96abcc3f1f5-I13", "source": "package org.springframework.web.socket.sockjs.frame;\n\n/**\n * Applies a transport-specific format to the content of a SockJS frame resulting\n * in a content that can be written out. Primarily for use in HTTP server-side\n * transports that push data.\n *\n * <p>Formatting may vary from simply appending a new line character for XHR\n * polling and streaming transports, to a jsonp-style callback function,\n * surrounding script tags, and more.\n *\n * <p>For the various SockJS frame formats in use, see implementations of\n * {@link  org.springframework.web.socket.sockjs.transport.handler.AbstractHttpSendingTransportHandler#getFrameFormat(org.springframework.http.server.ServerHttpRequest) AbstractHttpSendingTransportHandler.getFrameFormat}\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic interface SockJsFrameFormat {\n\n\tString format(SockJsFrame frame);\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__SockJsFrameFormat__91b34ffd.java", "base_sample_id": "source-cdc0a5b528f71809", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java", "interference": "lower-for-to-while", "level": 13, "line_count": 22, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__SockJsFrameFormat__bcc3f1f5.java", "order": 13, "original_content_sha256": "c6d168e3e95aff668a35dee12b72668595b151dbf9ff7879b42dea83124b8f42", "parent_variant_id": "int-7ba291b34ffd-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrameFormat.java#L19-L38", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "interface", "unit_name": "SockJsFrameFormat", "variant_id": "int-e96abcc3f1f5-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1330, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-775ef13e65f8-SRC", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n/**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t/**\n\t * Pattern for validating callback parameter values.\n\t */\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void handleRequest(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tWebSocketHandler wsHandler, SockJsSession wsSession) throws SockJsException {\n\n\t\tAbstractHttpSockJsSession sockJsSession = (AbstractHttpSockJsSession) wsSession;\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tresponse.getHeaders().setContentType(getContentType());\n\n\t\thandleRequestInternal(request, response, sockJsSession);\n\t}\n\n\tprotected void handleRequestInternal(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) throws SockJsException {\n\n\t\tif (sockJsSession.isNew()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(request.getMethod() + \" \" + request.getURI());\n\t\t\t}\n\t\t\tsockJsSession.handleInitialRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse if (sockJsSession.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameGoAway(), request, response, sockJsSession);\n\t\t}\n\t\telse if (!sockJsSession.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\tsockJsSession.handleSuccessiveRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameAnotherConnectionOpen(), request, response, sockJsSession);\n\t\t}\n\t}\n\n\tprivate void writeFrame(SockJsFrame frame, ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) {\n\n\t\tString formattedFrame = getFrameFormat(request).format(frame);\n\t\ttry {\n\t\t\tresponse.getBody().write(formattedFrame.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException ex) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + formattedFrame, sockJsSession.getId(), ex);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType getContentType();\n\n\tprotected abstract SockJsFrameFormat getFrameFormat(ServerHttpRequest request);\n\n\n\tprotected final @Nullable String getCallbackParam(ServerHttpRequest request) {\n\t\tString query = request.getURI().getQuery();\n\t\tMultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();\n\t\tString value = params.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(value)) {\n\t\t\treturn null;\n\t\t}\n\t\tString result = UriUtils.decode(value, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": [], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "source", "construction_source": "pluggable-java-degrader", "content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "description": "Unmodified source class", "display_label": "SRC", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": null, "level": 0, "line_count": 109, "local_path": "source-original/SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "order": 0, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": null, "readability_direction": "baseline", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "original", "transformation_stats": {}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-775ef13e65f8-SRC", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1051, "constructed_application_mode": "independent-interference", "is_baseline_variant": true, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fc4e9e2ceffd-I01", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n\n\n\n\n\n\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t\n\n\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void handleRequest(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tWebSocketHandler wsHandler, SockJsSession wsSession) throws SockJsException {\n\n\t\tAbstractHttpSockJsSession sockJsSession = (AbstractHttpSockJsSession) wsSession;\n\n\t\t \n\t\t \n\n\t\t \n\t\tresponse.getHeaders().setContentType(getContentType());\n\n\t\thandleRequestInternal(request, response, sockJsSession);\n\t}\n\n\tprotected void handleRequestInternal(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) throws SockJsException {\n\n\t\tif (sockJsSession.isNew()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(request.getMethod() + \" \" + request.getURI());\n\t\t\t}\n\t\t\tsockJsSession.handleInitialRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse if (sockJsSession.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameGoAway(), request, response, sockJsSession);\n\t\t}\n\t\telse if (!sockJsSession.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\tsockJsSession.handleSuccessiveRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameAnotherConnectionOpen(), request, response, sockJsSession);\n\t\t}\n\t}\n\n\tprivate void writeFrame(SockJsFrame frame, ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) {\n\n\t\tString formattedFrame = getFrameFormat(request).format(frame);\n\t\ttry {\n\t\t\tresponse.getBody().write(formattedFrame.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException ex) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + formattedFrame, sockJsSession.getId(), ex);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType getContentType();\n\n\tprotected abstract SockJsFrameFormat getFrameFormat(ServerHttpRequest request);\n\n\n\tprotected final @Nullable String getCallbackParam(ServerHttpRequest request) {\n\t\tString query = request.getURI().getQuery();\n\t\tMultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();\n\t\tString value = params.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(value)) {\n\t\t\treturn null;\n\t\t}\n\t\tString result = UriUtils.decode(value, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["remove-comments"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "comments", "construction_source": "pluggable-java-degrader", "content_sha256": "141f1abf1a41f873b0a42bc5b97d0e7730abe9b0a4ff025a1efde85867d84e42", "description": "Remove line comments, block comments, and Javadoc", "display_label": "I01", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "remove-comments", "level": 1, "line_count": 109, "local_path": "comments/remove-comments/I01__spring-framework__AbstractHttpSendingTransportHandler__9e2ceffd.java", "order": 1, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "remove-comments", "transformation_stats": {"comment_bytes_removed": 322, "comments_removed": 5}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-fc4e9e2ceffd-I01", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1052, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-44b570968b1f-I02", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n/**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t/**\n\t * Pattern for validating callback parameter values.\n\t */\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void handle(ServerHttpRequest req, ServerHttpResponse res,\n\t\t\tWebSocketHandler ws, SockJsSession ws2) throws SockJsException {\n\n\t\tAbstractHttpSockJsSession sock = (AbstractHttpSockJsSession) ws2;\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tres.getHeaders().setContentType(get());\n\n\t\thandle2(req, res, sock);\n\t}\n\n\tprotected void handle2(ServerHttpRequest req2, ServerHttpResponse res2,\n\t\t\tAbstractHttpSockJsSession sock2) throws SockJsException {\n\n\t\tif (sock2.isNew()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(req2.getMethod() + \" \" + req2.getURI());\n\t\t\t}\n\t\t\tsock2.handleInitialRequest(req2, res2, get2(req2));\n\t\t}\n\t\telse if (sock2.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + sock2);\n\t\t\t}\n\t\t\twrite(SockJsFrame.closeFrameGoAway(), req2, res2, sock2);\n\t\t}\n\t\telse if (!sock2.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\tsock2.handleSuccessiveRequest(req2, res2, get2(req2));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + sock2);\n\t\t\t}\n\t\t\twrite(SockJsFrame.closeFrameAnotherConnectionOpen(), req2, res2, sock2);\n\t\t}\n\t}\n\n\tprivate void write(SockJsFrame fra, ServerHttpRequest req3, ServerHttpResponse res3,\n\t\t\tAbstractHttpSockJsSession sock3) {\n\n\t\tString formatted = get2(req3).format(fra);\n\t\ttry {\n\t\t\tres3.getBody().write(formatted.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException ex) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + formatted, sock3.getId(), ex);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType get();\n\n\tprotected abstract SockJsFrameFormat get2(ServerHttpRequest req4);\n\n\n\tprotected final @Nullable String get3(ServerHttpRequest req5) {\n\t\tString que = req5.getURI().getQuery();\n\t\tMultiValueMap<String, String> par = UriComponentsBuilder.newInstance().query(que).build().getQueryParams();\n\t\tString val = par.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(val)) {\n\t\t\treturn null;\n\t\t}\n\t\tString res4 = UriUtils.decode(val, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(res4).matches() ? res4 : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["shorten-identifiers"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b96733bdf51c78d7041276728cdc97ff0e3b4fc48057bd6a88d4574aabe08564", "description": "Shorten method, parameter, and local names without collisions", "display_label": "I02", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "shorten-identifiers", "level": 2, "line_count": 109, "local_path": "identifiers/shorten-identifiers/I02__spring-framework__AbstractHttpSendingTransportHandler__70968b1f.java", "order": 2, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "shorten-identifiers", "transformation_stats": {"identifier_references_renamed": 40, "identifiers_declared": 20, "local_name_collisions_avoided": 10, "method_calls_renamed": 7, "method_declarations_renamed": 6, "method_name_collisions_avoided": 3, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-44b570968b1f-I02", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1053, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-daa5fa5a78ab-I03", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n/**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t/**\n\t * Pattern for validating callback parameter values.\n\t */\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void validateToken(ServerHttpRequest profile, ServerHttpResponse nextPath,\n\t\t\tWebSocketHandler nextOrder, SockJsSession nextScore) throws SockJsException {\n\n\t\tAbstractHttpSockJsSession pendingBuffer = (AbstractHttpSockJsSession) nextScore;\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tnextPath.getHeaders().setContentType(validateStatus());\n\n\t\tvalidateAddress(profile, nextPath, pendingBuffer);\n\t}\n\n\tprotected void validateAddress(ServerHttpRequest invoice, ServerHttpResponse customer,\n\t\t\tAbstractHttpSockJsSession cachedSession) throws SockJsException {\n\n\t\tif (cachedSession.isNew()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(invoice.getMethod() + \" \" + invoice.getURI());\n\t\t\t}\n\t\t\tcachedSession.handleInitialRequest(invoice, customer, validateConfig(invoice));\n\t\t}\n\t\telse if (cachedSession.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + cachedSession);\n\t\t\t}\n\t\t\tsendClient(SockJsFrame.closeFrameGoAway(), invoice, customer, cachedSession);\n\t\t}\n\t\telse if (!cachedSession.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\tcachedSession.handleSuccessiveRequest(invoice, customer, validateConfig(invoice));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + cachedSession);\n\t\t\t}\n\t\t\tsendClient(SockJsFrame.closeFrameAnotherConnectionOpen(), invoice, customer, cachedSession);\n\t\t}\n\t}\n\n\tprivate void sendClient(SockJsFrame score, ServerHttpRequest balance, ServerHttpResponse duration,\n\t\t\tAbstractHttpSockJsSession activeRequest) {\n\n\t\tString pendingBalance = validateConfig(balance).format(score);\n\t\ttry {\n\t\t\tduration.getBody().write(pendingBalance.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException map) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + pendingBalance, activeRequest.getId(), map);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType validateStatus();\n\n\tprotected abstract SockJsFrameFormat validateConfig(ServerHttpRequest payload);\n\n\n\tprotected final @Nullable String validateSession(ServerHttpRequest channel) {\n\t\tString cache = channel.getURI().getQuery();\n\t\tMultiValueMap<String, String> status = UriComponentsBuilder.newInstance().query(cache).build().getQueryParams();\n\t\tString total = status.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(total)) {\n\t\t\treturn null;\n\t\t}\n\t\tString option = UriUtils.decode(total, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(option).matches() ? option : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["mislead-identifiers"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "b1af2820ff310b8f27886a43b9b69ececaa12cb908cd9480dbf3ecd486e4c398", "description": "Replace method, parameter, and local names with length-matched, meaningful but unrelated names", "display_label": "I03", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "mislead-identifiers", "level": 3, "line_count": 109, "local_path": "identifiers/mislead-identifiers/I03__spring-framework__AbstractHttpSendingTransportHandler__fa5a78ab.java", "order": 3, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "mislead-identifiers", "transformation_stats": {"identifier_references_renamed": 40, "identifiers_declared": 20, "local_alphabetic_fallbacks_used": 0, "local_candidate_pool_size": 494, "local_collision_candidates_skipped": 3, "local_exact_length_matches": 19, "local_random_pool_selections": 20, "local_total_length_difference": 1, "method_alphabetic_fallbacks_used": 0, "method_calls_renamed": 7, "method_candidate_pool_size": 521, "method_collision_candidates_skipped": 1, "method_declarations_renamed": 6, "method_exact_length_matches": 4, "method_name_groups": 6, "method_random_pool_selections": 6, "method_total_length_difference": 7}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-daa5fa5a78ab-I03", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1054, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-fc1d089ea327-I04", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n/**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t/**\n\t * Pattern for validating callback parameter values.\n\t */\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void a(ServerHttpRequest a, ServerHttpResponse b,\n\t\t\tWebSocketHandler c, SockJsSession d) throws SockJsException {\n\n\t\tAbstractHttpSockJsSession e = (AbstractHttpSockJsSession) d;\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tb.getHeaders().setContentType(d());\n\n\t\tb(a, b, e);\n\t}\n\n\tprotected void b(ServerHttpRequest f, ServerHttpResponse g,\n\t\t\tAbstractHttpSockJsSession h) throws SockJsException {\n\n\t\tif (h.isNew()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(f.getMethod() + \" \" + f.getURI());\n\t\t\t}\n\t\t\th.handleInitialRequest(f, g, e(f));\n\t\t}\n\t\telse if (h.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + h);\n\t\t\t}\n\t\t\tc(SockJsFrame.closeFrameGoAway(), f, g, h);\n\t\t}\n\t\telse if (!h.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\th.handleSuccessiveRequest(f, g, e(f));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + h);\n\t\t\t}\n\t\t\tc(SockJsFrame.closeFrameAnotherConnectionOpen(), f, g, h);\n\t\t}\n\t}\n\n\tprivate void c(SockJsFrame i, ServerHttpRequest j, ServerHttpResponse k,\n\t\t\tAbstractHttpSockJsSession l) {\n\n\t\tString m = e(j).format(i);\n\t\ttry {\n\t\t\tk.getBody().write(m.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException n) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + m, l.getId(), n);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType d();\n\n\tprotected abstract SockJsFrameFormat e(ServerHttpRequest o);\n\n\n\tprotected final @Nullable String f(ServerHttpRequest p) {\n\t\tString q = p.getURI().getQuery();\n\t\tMultiValueMap<String, String> r = UriComponentsBuilder.newInstance().query(q).build().getQueryParams();\n\t\tString s = r.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(s)) {\n\t\t\treturn null;\n\t\t}\n\t\tString t = UriUtils.decode(s, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(t).matches() ? t : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["garble-identifiers"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "identifiers", "construction_source": "pluggable-java-degrader", "content_sha256": "e328caa2f5f0678767cca4115c2dff0a3db29dcd179f6df3e1817d1d80eb46f9", "description": "Replace method, parameter, and local names with deterministic ProGuard-style short identifiers", "display_label": "I04", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "garble-identifiers", "level": 4, "line_count": 109, "local_path": "identifiers/garble-identifiers/I04__spring-framework__AbstractHttpSendingTransportHandler__089ea327.java", "order": 4, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "garble-identifiers", "transformation_stats": {"identifier_references_renamed": 40, "identifiers_declared": 20, "local_name_collisions_avoided": 0, "method_calls_renamed": 7, "method_declarations_renamed": 6, "method_name_collisions_avoided": 0, "method_name_groups": 6}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-fc1d089ea327-I04", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1055, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-6ad3385c28ff-I05", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n/**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t/**\n\t * Pattern for validating callback parameter values.\n\t */\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void handleRequest(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tWebSocketHandler wsHandler, SockJsSession wsSession) throws SockJsException {\n\n\t\tAbstractHttpSockJsSession sockJsSession = (AbstractHttpSockJsSession) wsSession;\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tresponse.getHeaders().setContentType(getContentType());\n\n\t\thandleRequestInternal(request, response, sockJsSession);\n\t}\n\n\tprotected void handleRequestInternal(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) throws SockJsException {\n\n\t\tif (sockJsSession.isNew()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(request.getMethod() + \" \" + request.getURI());\n\t\t\t}\n\t\t\tsockJsSession.handleInitialRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse if (sockJsSession.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameGoAway(), request, response, sockJsSession);\n\t\t}\n\t\telse if (!sockJsSession.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\tsockJsSession.handleSuccessiveRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameAnotherConnectionOpen(), request, response, sockJsSession);\n\t\t}\n\t}\n\n\tprivate void writeFrame(SockJsFrame frame, ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) {\n\n\t\tString formattedFrame = getFrameFormat(request).format(frame);\n\t\ttry {\n\t\t\tresponse.getBody().write(formattedFrame.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException ex) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + formattedFrame, sockJsSession.getId(), ex);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType getContentType();\n\n\tprotected abstract SockJsFrameFormat getFrameFormat(ServerHttpRequest request);\n\n\n\tprotected final @Nullable String getCallbackParam(ServerHttpRequest request) {\n\t\tString query = request.getURI().getQuery();\n\t\tMultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();\n\t\tString value = params.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(value)) {\n\t\t\treturn null;\n\t\t}\n\t\tString result = UriUtils.decode(value, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["encode-integer-literals"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "description": "Rewrite eligible decimal integer literals in hexadecimal notation", "display_label": "I05", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "encode-integer-literals", "level": 5, "line_count": 109, "local_path": "expressions/encode-integer-literals/I05__spring-framework__AbstractHttpSendingTransportHandler__385c28ff.java", "order": 5, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "encode-integer-literals", "transformation_stats": {"decimal_integer_literals_rewritten_as_hexadecimal": 0}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-6ad3385c28ff-I05", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1056, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-23d2ef4aa485-I06", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n/**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t/**\n\t * Pattern for validating callback parameter values.\n\t */\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void handleRequest(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tWebSocketHandler wsHandler, SockJsSession wsSession) throws SockJsException {\n\n\t\tAbstractHttpSockJsSession sockJsSession = (AbstractHttpSockJsSession) wsSession;\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tresponse.getHeaders().setContentType(getContentType());\n\n\t\thandleRequestInternal(request, response, sockJsSession);\n\t}\n\n\tprotected void handleRequestInternal(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) throws SockJsException {\n\n\t\tif (!((sockJsSession.isNew()))) { if (sockJsSession.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameGoAway(), request, response, sockJsSession);\n\t\t}\n\t\telse if (!sockJsSession.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\tsockJsSession.handleSuccessiveRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameAnotherConnectionOpen(), request, response, sockJsSession);\n\t\t} } else {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(request.getMethod() + \" \" + request.getURI());\n\t\t\t}\n\t\t\tsockJsSession.handleInitialRequest(request, response, getFrameFormat(request));\n\t\t}\n\t}\n\n\tprivate void writeFrame(SockJsFrame frame, ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) {\n\n\t\tString formattedFrame = getFrameFormat(request).format(frame);\n\t\ttry {\n\t\t\tresponse.getBody().write(formattedFrame.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException ex) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + formattedFrame, sockJsSession.getId(), ex);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType getContentType();\n\n\tprotected abstract SockJsFrameFormat getFrameFormat(ServerHttpRequest request);\n\n\n\tprotected final @Nullable String getCallbackParam(ServerHttpRequest request) {\n\t\tString query = request.getURI().getQuery();\n\t\tMultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();\n\t\tString value = params.getFirst(\"c\");\n\t\tif (!((!StringUtils.hasLength(value)))) {} else {\n\t\t\treturn null;\n\t\t}\n\t\tString result = UriUtils.decode(value, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["invert-conditions"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "expressions", "construction_source": "pluggable-java-degrader", "content_sha256": "ef040b3ffcda1e73c19e1d4618eb568c38715ffb90ed9b9209341da24fe0e1c6", "description": "Invert eligible conditions and exchange their branches", "display_label": "I06", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "invert-conditions", "level": 6, "line_count": 108, "local_path": "expressions/invert-conditions/I06__spring-framework__AbstractHttpSendingTransportHandler__ef4aa485.java", "order": 6, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "invert-conditions", "transformation_stats": {"conditions_inverted": 2}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-23d2ef4aa485-I06", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1057, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-c6845024745c-I07", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n/**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t/**\n\t * Pattern for validating callback parameter values.\n\t */\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void handleRequest(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tWebSocketHandler wsHandler, SockJsSession wsSession) throws SockJsException {\nif (((0x7FFE ^ 0x7FFE) != 0)) { throw new AssertionError(); }\n\n\n\t\tAbstractHttpSockJsSession sockJsSession = (AbstractHttpSockJsSession) wsSession;\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tresponse.getHeaders().setContentType(getContentType());\n\n\t\thandleRequestInternal(request, response, sockJsSession);\n\t}\n\n\tprotected void handleRequestInternal(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) throws SockJsException {\nif (((0x2482 ^ 0x2482) != 0)) { throw new AssertionError(); }\n\n\n\t\tif (sockJsSession.isNew()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(request.getMethod() + \" \" + request.getURI());\n\t\t\t}\n\t\t\tsockJsSession.handleInitialRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse if (sockJsSession.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameGoAway(), request, response, sockJsSession);\n\t\t}\n\t\telse if (!sockJsSession.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\tsockJsSession.handleSuccessiveRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameAnotherConnectionOpen(), request, response, sockJsSession);\n\t\t}\n\t}\n\n\tprivate void writeFrame(SockJsFrame frame, ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) {\nif (((0x4A6C ^ 0x4A6C) != 0)) { throw new AssertionError(); }\n\n\n\t\tString formattedFrame = getFrameFormat(request).format(frame);\n\t\ttry {\n\t\t\tresponse.getBody().write(formattedFrame.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException ex) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + formattedFrame, sockJsSession.getId(), ex);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType getContentType();\n\n\tprotected abstract SockJsFrameFormat getFrameFormat(ServerHttpRequest request);\n\n\n\tprotected final @Nullable String getCallbackParam(ServerHttpRequest request) {\nif (((0xA97A ^ 0xA97A) != 0)) { throw new AssertionError(); }\n\n\t\tString query = request.getURI().getQuery();\n\t\tMultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();\n\t\tString value = params.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(value)) {\n\t\t\treturn null;\n\t\t}\n\t\tString result = UriUtils.decode(value, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["insert-dead-branches"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "b3716f7ef9475dc7c49f6bcdfcc21ccd70e2f7fdf8fc9352e3989426b70c17bb", "description": "Insert deterministic runtime-dead branches into callable bodies", "display_label": "I07", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "insert-dead-branches", "level": 7, "line_count": 117, "local_path": "code-injection/insert-dead-branches/I07__spring-framework__AbstractHttpSendingTransportHandler__5024745c.java", "order": 7, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "insert-dead-branches", "transformation_stats": {"dead_branches_inserted": 4}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-c6845024745c-I07", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1058, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-f82bf32e5dce-I08", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n/**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t/**\n\t * Pattern for validating callback parameter values.\n\t */\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void handleRequest(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tWebSocketHandler wsHandler, SockJsSession wsSession) throws SockJsException {\n\n\t\tAbstractHttpSockJsSession sockJsSession = (AbstractHttpSockJsSession) wsSession;\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tresponse.getHeaders().setContentType(getContentType());\n\n\t\thandleRequestInternal(request, response, sockJsSession);\n\t}\n\n\tprotected void handleRequestInternal(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) throws SockJsException {\n\n\t\tif (sockJsSession.isNew()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(request.getMethod() + \" \" + request.getURI());\n\t\t\t}\n\t\t\tsockJsSession.handleInitialRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse if (sockJsSession.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameGoAway(), request, response, sockJsSession);\n\t\t}\n\t\telse if (!sockJsSession.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\tsockJsSession.handleSuccessiveRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameAnotherConnectionOpen(), request, response, sockJsSession);\n\t\t}\n\t}\n\n\tprivate void writeFrame(SockJsFrame frame, ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) {\n{\n  int startingPosition = 2;\n  int endingPosition = 9;\n  int travelDistance = endingPosition - startingPosition;\n  if (travelDistance < 0) {\n    travelDistance = -travelDistance;\n  }\n}\n\n\n\t\tString formattedFrame = getFrameFormat(request).format(frame);\n\t\ttry {\n\t\t\tresponse.getBody().write(formattedFrame.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException ex) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + formattedFrame, sockJsSession.getId(), ex);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType getContentType();\n\n\tprotected abstract SockJsFrameFormat getFrameFormat(ServerHttpRequest request);\n\n\n\tprotected final @Nullable String getCallbackParam(ServerHttpRequest request) {\n\t\tString query = request.getURI().getQuery();\n\t\tMultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();\n\t\tString value = params.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(value)) {\n\t\t\treturn null;\n\t\t}\n\t\tString result = UriUtils.decode(value, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-readable-unrelated-code"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "9e4e8705350b6e2e8b2a093dad6f348f1ae2dbbe3a4b44e67ed921a8b4a4c858", "description": "Select one of ten high-readability unrelated code templates per class", "display_label": "I08", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "inject-readable-unrelated-code", "level": 8, "line_count": 118, "local_path": "code-injection/inject-readable-unrelated-code/I08__spring-framework__AbstractHttpSendingTransportHandler__f32e5dce.java", "order": 8, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "inject-readable-unrelated-code", "transformation_stats": {"readable_blocks_injected": 1, "readable_lines_injected": 8, "readable_template_index": 9}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-f82bf32e5dce-I08", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1059, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-766628c169e4-I09", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n/**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t/**\n\t * Pattern for validating callback parameter values.\n\t */\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void handleRequest(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tWebSocketHandler wsHandler, SockJsSession wsSession) throws SockJsException {\n\n\t\tAbstractHttpSockJsSession sockJsSession = (AbstractHttpSockJsSession) wsSession;\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tresponse.getHeaders().setContentType(getContentType());\n\n\t\thandleRequestInternal(request, response, sockJsSession);\n\t}\n\n\tprotected void handleRequestInternal(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) throws SockJsException {\n\n\t\tif (sockJsSession.isNew()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(request.getMethod() + \" \" + request.getURI());\n\t\t\t}\n\t\t\tsockJsSession.handleInitialRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse if (sockJsSession.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameGoAway(), request, response, sockJsSession);\n\t\t}\n\t\telse if (!sockJsSession.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\tsockJsSession.handleSuccessiveRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameAnotherConnectionOpen(), request, response, sockJsSession);\n\t\t}\n\t}\n\n\tprivate void writeFrame(SockJsFrame frame, ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) {\n\n\t\tString formattedFrame = getFrameFormat(request).format(frame);\n\t\ttry {\n\t\t\tresponse.getBody().write(formattedFrame.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException ex) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + formattedFrame, sockJsSession.getId(), ex);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType getContentType();\n\n\tprotected abstract SockJsFrameFormat getFrameFormat(ServerHttpRequest request);\n\n\n\tprotected final @Nullable String getCallbackParam(ServerHttpRequest request) {\n{boolean lI0O_0b0a6999=((0x51DD^0x51DD)!=0);lI0O_0b0a6999=!(!lI0O_0b0a6999);}\n\n\t\tString query = request.getURI().getQuery();\n\t\tMultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();\n\t\tString value = params.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(value)) {\n\t\t\treturn null;\n\t\t}\n\t\tString result = UriUtils.decode(value, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inject-low-readability-unrelated-code"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "code-injection", "construction_source": "pluggable-java-degrader", "content_sha256": "894563b7c978990d5f930a1462b8f5affb4c1092cfdbca464f9da5c858dea262", "description": "Select one of ten low-readability unrelated code templates per class", "display_label": "I09", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "inject-low-readability-unrelated-code", "level": 9, "line_count": 111, "local_path": "code-injection/inject-low-readability-unrelated-code/I09__spring-framework__AbstractHttpSendingTransportHandler__28c169e4.java", "order": 9, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "inject-low-readability-unrelated-code", "transformation_stats": {"low_readability_blocks_injected": 1, "low_readability_template_index": 4}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-766628c169e4-I09", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1060, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-aabcd3612d29-I10", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame; import org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory; import org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession; import org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils; /**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler implements SockJsSessionFactory { /**\n\t * Pattern for validating callback parameter values.\n\t */ private static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override public final void handleRequest(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, SockJsSession wsSession) throws SockJsException { AbstractHttpSockJsSession sockJsSession = (AbstractHttpSockJsSession) wsSession;\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tresponse.getHeaders().setContentType(getContentType());\n\n\t\thandleRequestInternal(request, response, sockJsSession);\n\t}\n\n\tprotected void handleRequestInternal(ServerHttpRequest request, ServerHttpResponse response, AbstractHttpSockJsSession sockJsSession) throws SockJsException { if (sockJsSession.isNew()) { if (logger.isDebugEnabled()) { logger.debug(request.getMethod() + \" \" + request.getURI());\n\t\t\t}\n\t\t\tsockJsSession.handleInitialRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse if (sockJsSession.isClosed()) { if (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + sockJsSession);\n\t\t\t} writeFrame(SockJsFrame.closeFrameGoAway(), request, response, sockJsSession);\n\t\t}\n\t\telse if (!sockJsSession.isActive()) { if (logger.isTraceEnabled()) { logger.trace(\"Starting \" + getTransportType() + \" async request.\"); }\n\t\t\tsockJsSession.handleSuccessiveRequest(request, response, getFrameFormat(request)); }\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) { logger.debug(\"Another \" + getTransportType() + \" connection still open for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameAnotherConnectionOpen(), request, response, sockJsSession);\n\t\t} }\n\n\tprivate void writeFrame(SockJsFrame frame, ServerHttpRequest request, ServerHttpResponse response, AbstractHttpSockJsSession sockJsSession) { String formattedFrame = getFrameFormat(request).format(frame);\n\t\ttry {\n\t\t\tresponse.getBody().write(formattedFrame.getBytes(SockJsFrame.CHARSET));\n\t\t} catch (IOException ex) { throw new SockJsException(\"Failed to send \" + formattedFrame, sockJsSession.getId(), ex); } }\n\n\n\tprotected abstract MediaType getContentType();\n\n\tprotected abstract SockJsFrameFormat getFrameFormat(ServerHttpRequest request);\n\n\n\tprotected final @Nullable String getCallbackParam(ServerHttpRequest request) {\n\t\tString query = request.getURI().getQuery();\n\t\tMultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();\n\t\tString value = params.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(value)) {\n\t\t\treturn null;\n\t\t}\n\t\tString result = UriUtils.decode(value, StandardCharsets.UTF_8); return (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null); }\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["partially-compact-layout"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "layout", "construction_source": "pluggable-java-degrader", "content_sha256": "bd6e18dc5ed399bde4fc593c89891f2aef3ce964f063354f02c4c6f7d955d4d4", "description": "Remove about 40% of line-break groups while retaining structure", "display_label": "I10", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "partially-compact-layout", "level": 10, "line_count": 72, "local_path": "layout/partially-compact-layout/I10__spring-framework__AbstractHttpSendingTransportHandler__d3612d29.java", "order": 10, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "partially-compact-layout", "transformation_stats": {"line_break_groups_available": 81, "line_break_groups_removed": 32, "line_breaks_removed": 37, "whitespace_characters_removed": 66}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-aabcd3612d29-I10", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1061, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-0ada12ac9cb4-I11", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n/**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t/**\n\t * Pattern for validating callback parameter values.\n\t */\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void handleRequest(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tWebSocketHandler wsHandler, SockJsSession wsSession) throws SockJsException {\n\n\t\tAbstractHttpSockJsSession sockJsSession = (AbstractHttpSockJsSession) wsSession;\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tresponse.getHeaders().setContentType(getContentType());\n\n\t\thandleRequestInternal(request, response, sockJsSession);\n\t}\n\n\tprotected void handleRequestInternal(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) throws SockJsException {\n\n\t\tif (sockJsSession.isNew()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(request.getMethod() + \" \" + request.getURI());\n\t\t\t}\n\t\t\tsockJsSession.handleInitialRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse if (sockJsSession.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameGoAway(), request, response, sockJsSession);\n\t\t}\n\t\telse if (!sockJsSession.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\tsockJsSession.handleSuccessiveRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameAnotherConnectionOpen(), request, response, sockJsSession);\n\t\t}\n\t}\n\n\tprivate void writeFrame(SockJsFrame frame, ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) {\n\n\t\tString formattedFrame = getFrameFormat(request).format(frame);\n\t\ttry {\n\t\t\tresponse.getBody().write(formattedFrame.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException ex) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + formattedFrame, sockJsSession.getId(), ex);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType getContentType();\n\n\tprotected abstract SockJsFrameFormat getFrameFormat(ServerHttpRequest request);\n\n\n\tprotected final @Nullable String getCallbackParam(ServerHttpRequest request) {\n\t\tString query = request.getURI().getQuery();\n\t\tMultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();\n\t\tString value = params.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(value)) {\n\t\t\treturn null;\n\t\t}\n\t\tString result = UriUtils.decode(value, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["introduce-numeric-intermediates"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "description": "Split eligible integer literals into pairs of short-named intermediate variables", "display_label": "I11", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "introduce-numeric-intermediates", "level": 11, "line_count": 109, "local_path": "data-flow/introduce-numeric-intermediates/I11__spring-framework__AbstractHttpSendingTransportHandler__12ac9cb4.java", "order": 11, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "introduce-numeric-intermediates", "transformation_stats": {"integer_literals_split": 0, "intermediate_variables_introduced": 0, "statements_augmented": 0}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-0ada12ac9cb4-I11", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1062, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-9ab9ef5c7e5f-I12", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n/**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t/**\n\t * Pattern for validating callback parameter values.\n\t */\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void handleRequest(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tWebSocketHandler wsHandler, SockJsSession wsSession) throws SockJsException {\n\n\t\t\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tresponse.getHeaders().setContentType(getContentType());\n\n\t\thandleRequestInternal(request, response, ((AbstractHttpSockJsSession) wsSession));\n\t}\n\n\tprotected void handleRequestInternal(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) throws SockJsException {\n\n\t\tif (sockJsSession.isNew()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(request.getMethod() + \" \" + request.getURI());\n\t\t\t}\n\t\t\tsockJsSession.handleInitialRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse if (sockJsSession.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameGoAway(), request, response, sockJsSession);\n\t\t}\n\t\telse if (!sockJsSession.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\tsockJsSession.handleSuccessiveRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameAnotherConnectionOpen(), request, response, sockJsSession);\n\t\t}\n\t}\n\n\tprivate void writeFrame(SockJsFrame frame, ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) {\n\n\t\tString formattedFrame = getFrameFormat(request).format(frame);\n\t\ttry {\n\t\t\tresponse.getBody().write(formattedFrame.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException ex) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + formattedFrame, sockJsSession.getId(), ex);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType getContentType();\n\n\tprotected abstract SockJsFrameFormat getFrameFormat(ServerHttpRequest request);\n\n\n\tprotected final @Nullable String getCallbackParam(ServerHttpRequest request) {\n\t\tString query = request.getURI().getQuery();\n\t\tMultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();\n\t\tString value = params.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(value)) {\n\t\t\treturn null;\n\t\t}\n\t\tString result = UriUtils.decode(value, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["inline-intermediate-variables"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "data-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "965d1ff46151dab8ef5fc7da3f8b920c18fc96c3dc1dce09a81ba552be55ecf8", "description": "Inline all eligible single-use intermediate local variables", "display_label": "I12", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "inline-intermediate-variables", "level": 12, "line_count": 109, "local_path": "data-flow/inline-intermediate-variables/I12__spring-framework__AbstractHttpSendingTransportHandler__ef5c7e5f.java", "order": 12, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "inline-intermediate-variables", "transformation_stats": {"identifier_references_replaced": 1, "intermediate_variables_available": 1, "intermediate_variables_inlined": 1, "target_fraction_percent": 100}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-9ab9ef5c7e5f-I12", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1063, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}, {"task_id": "int-2d72717f229e-I13", "source": "package org.springframework.web.socket.sockjs.transport.handler;\nimport java.io.IOException;\nimport java.nio.charset.StandardCharsets;\nimport java.util.regex.Pattern;\nimport org.jspecify.annotations.Nullable;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.server.ServerHttpRequest;\nimport org.springframework.http.server.ServerHttpResponse;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.socket.WebSocketHandler;\nimport org.springframework.web.socket.sockjs.SockJsException;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrame;\nimport org.springframework.web.socket.sockjs.frame.SockJsFrameFormat;\nimport org.springframework.web.socket.sockjs.transport.SockJsSession;\nimport org.springframework.web.socket.sockjs.transport.SockJsSessionFactory;\nimport org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession;\nimport org.springframework.web.util.UriComponentsBuilder;\nimport org.springframework.web.util.UriUtils;\n\n/**\n * Base class for HTTP transport handlers that push messages to connected clients.\n *\n * @author Rossen Stoyanchev\n * @since 4.0\n */\npublic abstract class AbstractHttpSendingTransportHandler extends AbstractTransportHandler\n\t\timplements SockJsSessionFactory {\n\n\t/**\n\t * Pattern for validating callback parameter values.\n\t */\n\tprivate static final Pattern CALLBACK_PARAM_PATTERN = Pattern.compile(\"[0-9A-Za-z_.]*\");\n\n\n\t@Override\n\tpublic final void handleRequest(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tWebSocketHandler wsHandler, SockJsSession wsSession) throws SockJsException {\n\n\t\tAbstractHttpSockJsSession sockJsSession = (AbstractHttpSockJsSession) wsSession;\n\n\t\t// https://github.com/sockjs/sockjs-client/issues/130\n\t\t// sockJsSession.setAcceptedProtocol(protocol);\n\n\t\t// Set content type before writing\n\t\tresponse.getHeaders().setContentType(getContentType());\n\n\t\thandleRequestInternal(request, response, sockJsSession);\n\t}\n\n\tprotected void handleRequestInternal(ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) throws SockJsException {\n\n\t\tif (sockJsSession.isNew()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(request.getMethod() + \" \" + request.getURI());\n\t\t\t}\n\t\t\tsockJsSession.handleInitialRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse if (sockJsSession.isClosed()) {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Connection already closed (but not removed yet) for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameGoAway(), request, response, sockJsSession);\n\t\t}\n\t\telse if (!sockJsSession.isActive()) {\n\t\t\tif (logger.isTraceEnabled()) {\n\t\t\t\tlogger.trace(\"Starting \" + getTransportType() + \" async request.\");\n\t\t\t}\n\t\t\tsockJsSession.handleSuccessiveRequest(request, response, getFrameFormat(request));\n\t\t}\n\t\telse {\n\t\t\tif (logger.isDebugEnabled()) {\n\t\t\t\tlogger.debug(\"Another \" + getTransportType() + \" connection still open for \" + sockJsSession);\n\t\t\t}\n\t\t\twriteFrame(SockJsFrame.closeFrameAnotherConnectionOpen(), request, response, sockJsSession);\n\t\t}\n\t}\n\n\tprivate void writeFrame(SockJsFrame frame, ServerHttpRequest request, ServerHttpResponse response,\n\t\t\tAbstractHttpSockJsSession sockJsSession) {\n\n\t\tString formattedFrame = getFrameFormat(request).format(frame);\n\t\ttry {\n\t\t\tresponse.getBody().write(formattedFrame.getBytes(SockJsFrame.CHARSET));\n\t\t}\n\t\tcatch (IOException ex) {\n\t\t\tthrow new SockJsException(\"Failed to send \" + formattedFrame, sockJsSession.getId(), ex);\n\t\t}\n\t}\n\n\n\tprotected abstract MediaType getContentType();\n\n\tprotected abstract SockJsFrameFormat getFrameFormat(ServerHttpRequest request);\n\n\n\tprotected final @Nullable String getCallbackParam(ServerHttpRequest request) {\n\t\tString query = request.getURI().getQuery();\n\t\tMultiValueMap<String, String> params = UriComponentsBuilder.newInstance().query(query).build().getQueryParams();\n\t\tString value = params.getFirst(\"c\");\n\t\tif (!StringUtils.hasLength(value)) {\n\t\t\treturn null;\n\t\t}\n\t\tString result = UriUtils.decode(value, StandardCharsets.UTF_8);\n\t\treturn (CALLBACK_PARAM_PATTERN.matcher(result).matches() ? result : null);\n\t}\n\n}\n", "human_rating": null, "metadata": {"application_mode": "independent-interference", "applied_interferences": ["lower-for-to-while"], "base_local_path": "SRC__spring-framework__AbstractHttpSendingTransportHandler__f13e65f8.java", "base_sample_id": "source-2d974e6de6eade28", "category": "control-flow", "construction_source": "pluggable-java-degrader", "content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "description": "Lower every eligible classic and enhanced for loop to a while loop", "display_label": "I13", "granularity": "class", "group_id": "spring-framework:spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java", "interference": "lower-for-to-while", "level": 13, "line_count": 109, "local_path": "control-flow/lower-for-to-while/I13__spring-framework__AbstractHttpSendingTransportHandler__717f229e.java", "order": 13, "original_content_sha256": "bac38f0b76d43e7f0165be056772c7f02c312f24261f948b44c681c671142ff6", "parent_variant_id": "int-775ef13e65f8-SRC", "readability_direction": "decreasing", "source": "spring-framework", "source_name": "Spring Framework", "source_path": "spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java#L40-L128", "stage": "lower-for-to-while", "transformation_stats": {"classic_for_loops_eligible": 0, "classic_for_loops_found": 0, "classic_for_loops_lowered_to_while": 0, "enhanced_array_loops_lowered": 0, "enhanced_for_loops_eligible": 0, "enhanced_for_loops_found": 0, "enhanced_for_loops_lowered_to_while": 0, "enhanced_for_loops_skipped_for_header_comment": 0, "enhanced_for_loops_skipped_for_label": 0, "enhanced_for_loops_skipped_unknown_source_type": 0, "enhanced_for_loops_untouched": 0, "enhanced_iterable_loops_lowered": 0, "for_loops_lowered_to_while": 0, "for_loops_skipped_for_continue": 0, "for_loops_skipped_for_header_comment": 0, "for_loops_skipped_for_label": 0}, "unit_kind": "class", "unit_name": "AbstractHttpSendingTransportHandler", "variant_id": "int-2d72717f229e-I13", "raw_dataset": "java_comparative_obfuscation", "language": "java", "manifest_row": 1064, "constructed_application_mode": "independent-interference", "is_baseline_variant": false, "label_provenance": "paired_expected_readability_direction"}}]}