Four-way diff comparison

source: results/experiments/server_expand_1/rfc_core_wins_review.txt | generated: 2026-05-27T03:45:27.376766+00:00 | examples: 10

[007] cpython | 879c85f6e4ca__Include__opcode_ids.h

need=define-renumber align remote word
old: data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h
new: data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
note: opcode define renumbering with inserted/removed entries

histogram

git diff --no-index --histogram --color=always --unified=8 data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
index f9173fd..ac6d4d9 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h
+++ b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
@@ -21,121 +21,120 @@ extern "C" {
 #define DELETE_SUBSCR                            8
 #define END_FOR                                  9
 #define END_SEND                                10
 #define EXIT_INIT_CHECK                         11
 #define FORMAT_SIMPLE                           12
 #define FORMAT_WITH_SPEC                        13
 #define GET_AITER                               14
 #define GET_ANEXT                               15
-#define GET_ITER                                16
+#define GET_LEN                                 16
 #define RESERVED                                17
-#define GET_LEN                                 18
-#define GET_YIELD_FROM_ITER                     19
-#define INTERPRETER_EXIT                        20
-#define LOAD_BUILD_CLASS                        21
-#define LOAD_LOCALS                             22
-#define MAKE_FUNCTION                           23
-#define MATCH_KEYS                              24
-#define MATCH_MAPPING                           25
-#define MATCH_SEQUENCE                          26
-#define NOP                                     27
-#define NOT_TAKEN                               28
-#define POP_EXCEPT                              29
-#define POP_ITER                                30
-#define POP_TOP                                 31
-#define PUSH_EXC_INFO                           32
-#define PUSH_NULL                               33
-#define RETURN_GENERATOR                        34
-#define RETURN_VALUE                            35
-#define SETUP_ANNOTATIONS                       36
-#define STORE_SLICE                             37
-#define STORE_SUBSCR                            38
-#define TO_BOOL                                 39
-#define UNARY_INVERT                            40
-#define UNARY_NEGATIVE                          41
-#define UNARY_NOT                               42
-#define WITH_EXCEPT_START                       43
-#define BINARY_OP                               44
-#define BUILD_INTERPOLATION                     45
-#define BUILD_LIST                              46
-#define BUILD_MAP                               47
-#define BUILD_SET                               48
-#define BUILD_SLICE                             49
-#define BUILD_STRING                            50
-#define BUILD_TUPLE                             51
-#define CALL                                    52
-#define CALL_INTRINSIC_1                        53
-#define CALL_INTRINSIC_2                        54
-#define CALL_KW                                 55
-#define COMPARE_OP                              56
-#define CONTAINS_OP                             57
-#define CONVERT_VALUE                           58
-#define COPY                                    59
-#define COPY_FREE_VARS                          60
-#define DELETE_ATTR                             61
-#define DELETE_DEREF                            62
-#define DELETE_FAST                             63
-#define DELETE_GLOBAL                           64
-#define DELETE_NAME                             65
-#define DICT_MERGE                              66
-#define DICT_UPDATE                             67
-#define END_ASYNC_FOR                           68
-#define EXTENDED_ARG                            69
-#define FOR_ITER                                70
-#define GET_AWAITABLE                           71
-#define IMPORT_FROM                             72
-#define IMPORT_NAME                             73
-#define IS_OP                                   74
-#define JUMP_BACKWARD                           75
-#define JUMP_BACKWARD_NO_INTERRUPT              76
-#define JUMP_FORWARD                            77
-#define LIST_APPEND                             78
-#define LIST_EXTEND                             79
-#define LOAD_ATTR                               80
-#define LOAD_COMMON_CONSTANT                    81
-#define LOAD_CONST                              82
-#define LOAD_DEREF                              83
-#define LOAD_FAST                               84
-#define LOAD_FAST_AND_CLEAR                     85
-#define LOAD_FAST_BORROW                        86
-#define LOAD_FAST_BORROW_LOAD_FAST_BORROW       87
-#define LOAD_FAST_CHECK                         88
-#define LOAD_FAST_LOAD_FAST                     89
-#define LOAD_FROM_DICT_OR_DEREF                 90
-#define LOAD_FROM_DICT_OR_GLOBALS               91
-#define LOAD_GLOBAL                             92
-#define LOAD_NAME                               93
-#define LOAD_SMALL_INT                          94
-#define LOAD_SPECIAL                            95
-#define LOAD_SUPER_ATTR                         96
-#define MAKE_CELL                               97
-#define MAP_ADD                                 98
-#define MATCH_CLASS                             99
-#define POP_JUMP_IF_FALSE                      100
-#define POP_JUMP_IF_NONE                       101
-#define POP_JUMP_IF_NOT_NONE                   102
-#define POP_JUMP_IF_TRUE                       103
-#define RAISE_VARARGS                          104
-#define RERAISE                                105
-#define SEND                                   106
-#define SET_ADD                                107
-#define SET_FUNCTION_ATTRIBUTE                 108
-#define SET_UPDATE                             109
-#define STORE_ATTR                             110
-#define STORE_DEREF                            111
-#define STORE_FAST                             112
-#define STORE_FAST_LOAD_FAST                   113
-#define STORE_FAST_STORE_FAST                  114
-#define STORE_GLOBAL                           115
-#define STORE_NAME                             116
-#define SWAP                                   117
-#define UNPACK_EX                              118
-#define UNPACK_SEQUENCE                        119
-#define YIELD_VALUE                            120
+#define INTERPRETER_EXIT                        18
+#define LOAD_BUILD_CLASS                        19
+#define LOAD_LOCALS                             20
+#define MAKE_FUNCTION                           21
+#define MATCH_KEYS                              22
+#define MATCH_MAPPING                           23
+#define MATCH_SEQUENCE                          24
+#define NOP                                     25
+#define NOT_TAKEN                               26
+#define POP_EXCEPT                              27
+#define POP_ITER                                28
+#define POP_TOP                                 29
+#define PUSH_EXC_INFO                           30
+#define PUSH_NULL                               31
+#define RETURN_GENERATOR                        32
+#define RETURN_VALUE                            33
+#define SETUP_ANNOTATIONS                       34
+#define STORE_SLICE                             35
+#define STORE_SUBSCR                            36
+#define TO_BOOL                                 37
+#define UNARY_INVERT                            38
+#define UNARY_NEGATIVE                          39
+#define UNARY_NOT                               40
+#define WITH_EXCEPT_START                       41
+#define BINARY_OP                               42
+#define BUILD_INTERPOLATION                     43
+#define BUILD_LIST                              44
+#define BUILD_MAP                               45
+#define BUILD_SET                               46
+#define BUILD_SLICE                             47
+#define BUILD_STRING                            48
+#define BUILD_TUPLE                             49
+#define CALL                                    50
+#define CALL_INTRINSIC_1                        51
+#define CALL_INTRINSIC_2                        52
+#define CALL_KW                                 53
+#define COMPARE_OP                              54
+#define CONTAINS_OP                             55
+#define CONVERT_VALUE                           56
+#define COPY                                    57
+#define COPY_FREE_VARS                          58
+#define DELETE_ATTR                             59
+#define DELETE_DEREF                            60
+#define DELETE_FAST                             61
+#define DELETE_GLOBAL                           62
+#define DELETE_NAME                             63
+#define DICT_MERGE                              64
+#define DICT_UPDATE                             65
+#define END_ASYNC_FOR                           66
+#define EXTENDED_ARG                            67
+#define FOR_ITER                                68
+#define GET_AWAITABLE                           69
+#define GET_ITER                                70
+#define IMPORT_FROM                             71
+#define IMPORT_NAME                             72
+#define IS_OP                                   73
+#define JUMP_BACKWARD                           74
+#define JUMP_BACKWARD_NO_INTERRUPT              75
+#define JUMP_FORWARD                            76
+#define LIST_APPEND                             77
+#define LIST_EXTEND                             78
+#define LOAD_ATTR                               79
+#define LOAD_COMMON_CONSTANT                    80
+#define LOAD_CONST                              81
+#define LOAD_DEREF                              82
+#define LOAD_FAST                               83
+#define LOAD_FAST_AND_CLEAR                     84
+#define LOAD_FAST_BORROW                        85
+#define LOAD_FAST_BORROW_LOAD_FAST_BORROW       86
+#define LOAD_FAST_CHECK                         87
+#define LOAD_FAST_LOAD_FAST                     88
+#define LOAD_FROM_DICT_OR_DEREF                 89
+#define LOAD_FROM_DICT_OR_GLOBALS               90
+#define LOAD_GLOBAL                             91
+#define LOAD_NAME                               92
+#define LOAD_SMALL_INT                          93
+#define LOAD_SPECIAL                            94
+#define LOAD_SUPER_ATTR                         95
+#define MAKE_CELL                               96
+#define MAP_ADD                                 97
+#define MATCH_CLASS                             98
+#define POP_JUMP_IF_FALSE                       99
+#define POP_JUMP_IF_NONE                       100
+#define POP_JUMP_IF_NOT_NONE                   101
+#define POP_JUMP_IF_TRUE                       102
+#define RAISE_VARARGS                          103
+#define RERAISE                                104
+#define SEND                                   105
+#define SET_ADD                                106
+#define SET_FUNCTION_ATTRIBUTE                 107
+#define SET_UPDATE                             108
+#define STORE_ATTR                             109
+#define STORE_DEREF                            110
+#define STORE_FAST                             111
+#define STORE_FAST_LOAD_FAST                   112
+#define STORE_FAST_STORE_FAST                  113
+#define STORE_GLOBAL                           114
+#define STORE_NAME                             115
+#define SWAP                                   116
+#define UNPACK_EX                              117
+#define UNPACK_SEQUENCE                        118

[truncated]

word-diff

git diff --no-index --histogram --color=always --unified=8 --word-diff=plain data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
index f9173fd..ac6d4d9 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h
+++ b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
@@ -21,121 +21,120 @@ extern "C" {
#define DELETE_SUBSCR                            8
#define END_FOR                                  9
#define END_SEND                                10
#define EXIT_INIT_CHECK                         11
#define FORMAT_SIMPLE                           12
#define FORMAT_WITH_SPEC                        13
#define GET_AITER                               14
#define GET_ANEXT                               15
#define [-GET_ITER-]{+GET_LEN+}                                 16
#define RESERVED                                17
#define [-GET_LEN-]{+INTERPRETER_EXIT+}                        18
#define [-GET_YIELD_FROM_ITER-]{+LOAD_BUILD_CLASS+}                        19
#define [-INTERPRETER_EXIT-]{+LOAD_LOCALS+}                             20
#define [-LOAD_BUILD_CLASS-]{+MAKE_FUNCTION+}                           21
#define [-LOAD_LOCALS-]{+MATCH_KEYS+}                              22
#define [-MAKE_FUNCTION-]{+MATCH_MAPPING+}                           23
#define [-MATCH_KEYS-]{+MATCH_SEQUENCE+}                          24
#define [-MATCH_MAPPING-]{+NOP+}                                     25
#define [-MATCH_SEQUENCE-]{+NOT_TAKEN+}                               26
#define [-NOP-]{+POP_EXCEPT+}                              27
#define [-NOT_TAKEN-]{+POP_ITER+}                                28
#define [-POP_EXCEPT-]{+POP_TOP+}                                 29
#define [-POP_ITER-]{+PUSH_EXC_INFO+}                           30
#define [-POP_TOP-]{+PUSH_NULL+}                               31
#define [-PUSH_EXC_INFO-]{+RETURN_GENERATOR+}                        32
#define [-PUSH_NULL-]{+RETURN_VALUE+}                            33
#define [-RETURN_GENERATOR-]{+SETUP_ANNOTATIONS+}                       34
#define [-RETURN_VALUE-]{+STORE_SLICE+}                             35
#define [-SETUP_ANNOTATIONS-]{+STORE_SUBSCR+}                            36
#define [-STORE_SLICE-]{+TO_BOOL+}                                 37
#define [-STORE_SUBSCR-]{+UNARY_INVERT+}                            38
#define [-TO_BOOL-]{+UNARY_NEGATIVE+}                          39
#define [-UNARY_INVERT-]{+UNARY_NOT+}                               40
#define [-UNARY_NEGATIVE-]{+WITH_EXCEPT_START+}                       41
#define [-UNARY_NOT-]{+BINARY_OP+}                               42
#define [-WITH_EXCEPT_START-]{+BUILD_INTERPOLATION+}                     43
#define [-BINARY_OP-]{+BUILD_LIST+}                              44
#define [-BUILD_INTERPOLATION-]{+BUILD_MAP+}                               45
#define [-BUILD_LIST-]{+BUILD_SET+}                               46
#define [-BUILD_MAP-]{+BUILD_SLICE+}                             47
#define [-BUILD_SET-]{+BUILD_STRING+}                            48
#define [-BUILD_SLICE-]{+BUILD_TUPLE+}                             49
#define [-BUILD_STRING-]{+CALL+}                                    50
#define [-BUILD_TUPLE-]{+CALL_INTRINSIC_1+}                        51
#define [-CALL-]{+CALL_INTRINSIC_2+}                        52
#define [-CALL_INTRINSIC_1-]{+CALL_KW+}                                 53
#define [-CALL_INTRINSIC_2-]{+COMPARE_OP+}                              54
#define [-CALL_KW-]{+CONTAINS_OP+}                             55
#define [-COMPARE_OP-]{+CONVERT_VALUE+}                           56
#define [-CONTAINS_OP-]{+COPY+}                                    57
#define [-CONVERT_VALUE-]{+COPY_FREE_VARS+}                          58
#define [-COPY-]{+DELETE_ATTR+}                             59
#define [-COPY_FREE_VARS-]{+DELETE_DEREF+}                            60
#define [-DELETE_ATTR-]{+DELETE_FAST+}                             61
#define [-DELETE_DEREF-]{+DELETE_GLOBAL+}                           62
#define [-DELETE_FAST-]{+DELETE_NAME+}                             63
#define [-DELETE_GLOBAL-]{+DICT_MERGE+}                              64
#define [-DELETE_NAME-]{+DICT_UPDATE+}                             65
#define [-DICT_MERGE-]{+END_ASYNC_FOR+}                           66
#define [-DICT_UPDATE-]{+EXTENDED_ARG+}                            67
#define [-END_ASYNC_FOR-]{+FOR_ITER+}                                68
#define [-EXTENDED_ARG-]{+GET_AWAITABLE+}                           69
#define [-FOR_ITER-]{+GET_ITER+}                                70
#define[-GET_AWAITABLE                           71-]
[-#define-] IMPORT_FROM                             [-72-]{+71+}
#define IMPORT_NAME                             [-73-]{+72+}
#define IS_OP                                   [-74-]{+73+}
#define JUMP_BACKWARD                           [-75-]{+74+}
#define JUMP_BACKWARD_NO_INTERRUPT              [-76-]{+75+}
#define JUMP_FORWARD                            [-77-]{+76+}
#define LIST_APPEND                             [-78-]{+77+}
#define LIST_EXTEND                             [-79-]{+78+}
#define LOAD_ATTR                               [-80-]{+79+}
#define LOAD_COMMON_CONSTANT                    [-81-]{+80+}
#define LOAD_CONST                              [-82-]{+81+}
#define LOAD_DEREF                              [-83-]{+82+}
#define LOAD_FAST                               [-84-]{+83+}
#define LOAD_FAST_AND_CLEAR                     [-85-]{+84+}
#define LOAD_FAST_BORROW                        [-86-]{+85+}
#define LOAD_FAST_BORROW_LOAD_FAST_BORROW       [-87-]{+86+}
#define LOAD_FAST_CHECK                         [-88-]{+87+}
#define LOAD_FAST_LOAD_FAST                     [-89-]{+88+}
#define LOAD_FROM_DICT_OR_DEREF                 [-90-]{+89+}
#define LOAD_FROM_DICT_OR_GLOBALS               [-91-]{+90+}
#define LOAD_GLOBAL                             [-92-]{+91+}
#define LOAD_NAME                               [-93-]{+92+}
#define LOAD_SMALL_INT                          [-94-]{+93+}
#define LOAD_SPECIAL                            [-95-]{+94+}
#define LOAD_SUPER_ATTR                         [-96-]{+95+}
#define MAKE_CELL                               [-97-]{+96+}
#define MAP_ADD                                 [-98-]{+97+}
#define MATCH_CLASS                             [-99-]{+98+}
#define POP_JUMP_IF_FALSE                       [-100-]{+99+}
#define POP_JUMP_IF_NONE                       [-101-]{+100+}
#define POP_JUMP_IF_NOT_NONE                   [-102-]{+101+}
#define POP_JUMP_IF_TRUE                       [-103-]{+102+}
#define RAISE_VARARGS                          [-104-]{+103+}
#define RERAISE                                [-105-]{+104+}
#define SEND                                   [-106-]{+105+}
#define SET_ADD                                [-107-]{+106+}
#define SET_FUNCTION_ATTRIBUTE                 [-108-]{+107+}
#define SET_UPDATE                             [-109-]{+108+}
#define STORE_ATTR                             [-110-]{+109+}
#define STORE_DEREF                            [-111-]{+110+}
#define STORE_FAST                             [-112-]{+111+}
#define STORE_FAST_LOAD_FAST                   [-113-]{+112+}
#define STORE_FAST_STORE_FAST                  [-114-]{+113+}
#define STORE_GLOBAL                           [-115-]{+114+}
#define STORE_NAME                             [-116-]{+115+}
#define SWAP                                   [-117-]{+116+}
#define UNPACK_EX                              [-118-]{+117+}
#define UNPACK_SEQUENCE                        [-119-]{+118+}
#define YIELD_VALUE                            [-120-]{+119+}
#define RESUME                                 128
#define BINARY_OP_ADD_FLOAT                    129
#define BINARY_OP_ADD_INT                      130
#define BINARY_OP_ADD_UNICODE                  131
#define BINARY_OP_EXTEND                       132
#define BINARY_OP_MULTIPLY_FLOAT               133
#define BINARY_OP_MULTIPLY_INT                 134
#define BINARY_OP_SUBSCR_DICT                  135
@@ -247,16 +246,16 @@ extern "C" {
#define JUMP_NO_INTERRUPT                      260
#define LOAD_CLOSURE                           261
#define POP_BLOCK                              262
#define SETUP_CLEANUP                          263
#define SETUP_FINALLY                          264
#define SETUP_WITH                             265
#define STORE_FAST_MAYBE_NULL                  266

#define HAVE_ARGUMENT                           [-43-]{+41+}
#define MIN_SPECIALIZED_OPCODE                 129
#define MIN_INSTRUMENTED_OPCODE                233

#ifdef __cplusplus
}
#endif
#endif /* !Py_OPCODE_IDS_H */

color-moved

git diff --no-index --histogram --color=always --unified=8 --color-moved=blocks data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
index f9173fd..ac6d4d9 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h
+++ b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
@@ -21,121 +21,120 @@ extern "C" {
 #define DELETE_SUBSCR                            8
 #define END_FOR                                  9
 #define END_SEND                                10
 #define EXIT_INIT_CHECK                         11
 #define FORMAT_SIMPLE                           12
 #define FORMAT_WITH_SPEC                        13
 #define GET_AITER                               14
 #define GET_ANEXT                               15
-#define GET_ITER                                16
+#define GET_LEN                                 16
 #define RESERVED                                17
-#define GET_LEN                                 18
-#define GET_YIELD_FROM_ITER                     19
-#define INTERPRETER_EXIT                        20
-#define LOAD_BUILD_CLASS                        21
-#define LOAD_LOCALS                             22
-#define MAKE_FUNCTION                           23
-#define MATCH_KEYS                              24
-#define MATCH_MAPPING                           25
-#define MATCH_SEQUENCE                          26
-#define NOP                                     27
-#define NOT_TAKEN                               28
-#define POP_EXCEPT                              29
-#define POP_ITER                                30
-#define POP_TOP                                 31
-#define PUSH_EXC_INFO                           32
-#define PUSH_NULL                               33
-#define RETURN_GENERATOR                        34
-#define RETURN_VALUE                            35
-#define SETUP_ANNOTATIONS                       36
-#define STORE_SLICE                             37
-#define STORE_SUBSCR                            38
-#define TO_BOOL                                 39
-#define UNARY_INVERT                            40
-#define UNARY_NEGATIVE                          41
-#define UNARY_NOT                               42
-#define WITH_EXCEPT_START                       43
-#define BINARY_OP                               44
-#define BUILD_INTERPOLATION                     45
-#define BUILD_LIST                              46
-#define BUILD_MAP                               47
-#define BUILD_SET                               48
-#define BUILD_SLICE                             49
-#define BUILD_STRING                            50
-#define BUILD_TUPLE                             51
-#define CALL                                    52
-#define CALL_INTRINSIC_1                        53
-#define CALL_INTRINSIC_2                        54
-#define CALL_KW                                 55
-#define COMPARE_OP                              56
-#define CONTAINS_OP                             57
-#define CONVERT_VALUE                           58
-#define COPY                                    59
-#define COPY_FREE_VARS                          60
-#define DELETE_ATTR                             61
-#define DELETE_DEREF                            62
-#define DELETE_FAST                             63
-#define DELETE_GLOBAL                           64
-#define DELETE_NAME                             65
-#define DICT_MERGE                              66
-#define DICT_UPDATE                             67
-#define END_ASYNC_FOR                           68
-#define EXTENDED_ARG                            69
-#define FOR_ITER                                70
-#define GET_AWAITABLE                           71
-#define IMPORT_FROM                             72
-#define IMPORT_NAME                             73
-#define IS_OP                                   74
-#define JUMP_BACKWARD                           75
-#define JUMP_BACKWARD_NO_INTERRUPT              76
-#define JUMP_FORWARD                            77
-#define LIST_APPEND                             78
-#define LIST_EXTEND                             79
-#define LOAD_ATTR                               80
-#define LOAD_COMMON_CONSTANT                    81
-#define LOAD_CONST                              82
-#define LOAD_DEREF                              83
-#define LOAD_FAST                               84
-#define LOAD_FAST_AND_CLEAR                     85
-#define LOAD_FAST_BORROW                        86
-#define LOAD_FAST_BORROW_LOAD_FAST_BORROW       87
-#define LOAD_FAST_CHECK                         88
-#define LOAD_FAST_LOAD_FAST                     89
-#define LOAD_FROM_DICT_OR_DEREF                 90
-#define LOAD_FROM_DICT_OR_GLOBALS               91
-#define LOAD_GLOBAL                             92
-#define LOAD_NAME                               93
-#define LOAD_SMALL_INT                          94
-#define LOAD_SPECIAL                            95
-#define LOAD_SUPER_ATTR                         96
-#define MAKE_CELL                               97
-#define MAP_ADD                                 98
-#define MATCH_CLASS                             99
-#define POP_JUMP_IF_FALSE                      100
-#define POP_JUMP_IF_NONE                       101
-#define POP_JUMP_IF_NOT_NONE                   102
-#define POP_JUMP_IF_TRUE                       103
-#define RAISE_VARARGS                          104
-#define RERAISE                                105
-#define SEND                                   106
-#define SET_ADD                                107
-#define SET_FUNCTION_ATTRIBUTE                 108
-#define SET_UPDATE                             109
-#define STORE_ATTR                             110
-#define STORE_DEREF                            111
-#define STORE_FAST                             112
-#define STORE_FAST_LOAD_FAST                   113
-#define STORE_FAST_STORE_FAST                  114
-#define STORE_GLOBAL                           115
-#define STORE_NAME                             116
-#define SWAP                                   117
-#define UNPACK_EX                              118
-#define UNPACK_SEQUENCE                        119
-#define YIELD_VALUE                            120
+#define INTERPRETER_EXIT                        18
+#define LOAD_BUILD_CLASS                        19
+#define LOAD_LOCALS                             20
+#define MAKE_FUNCTION                           21
+#define MATCH_KEYS                              22
+#define MATCH_MAPPING                           23
+#define MATCH_SEQUENCE                          24
+#define NOP                                     25
+#define NOT_TAKEN                               26
+#define POP_EXCEPT                              27
+#define POP_ITER                                28
+#define POP_TOP                                 29
+#define PUSH_EXC_INFO                           30
+#define PUSH_NULL                               31
+#define RETURN_GENERATOR                        32
+#define RETURN_VALUE                            33
+#define SETUP_ANNOTATIONS                       34
+#define STORE_SLICE                             35
+#define STORE_SUBSCR                            36
+#define TO_BOOL                                 37
+#define UNARY_INVERT                            38
+#define UNARY_NEGATIVE                          39
+#define UNARY_NOT                               40
+#define WITH_EXCEPT_START                       41
+#define BINARY_OP                               42
+#define BUILD_INTERPOLATION                     43
+#define BUILD_LIST                              44
+#define BUILD_MAP                               45
+#define BUILD_SET                               46
+#define BUILD_SLICE                             47
+#define BUILD_STRING                            48
+#define BUILD_TUPLE                             49
+#define CALL                                    50
+#define CALL_INTRINSIC_1                        51
+#define CALL_INTRINSIC_2                        52
+#define CALL_KW                                 53
+#define COMPARE_OP                              54
+#define CONTAINS_OP                             55
+#define CONVERT_VALUE                           56
+#define COPY                                    57
+#define COPY_FREE_VARS                          58
+#define DELETE_ATTR                             59
+#define DELETE_DEREF                            60
+#define DELETE_FAST                             61
+#define DELETE_GLOBAL                           62
+#define DELETE_NAME                             63
+#define DICT_MERGE                              64
+#define DICT_UPDATE                             65
+#define END_ASYNC_FOR                           66
+#define EXTENDED_ARG                            67
+#define FOR_ITER                                68
+#define GET_AWAITABLE                           69
+#define GET_ITER                                70
+#define IMPORT_FROM                             71
+#define IMPORT_NAME                             72
+#define IS_OP                                   73
+#define JUMP_BACKWARD                           74
+#define JUMP_BACKWARD_NO_INTERRUPT              75
+#define JUMP_FORWARD                            76
+#define LIST_APPEND                             77
+#define LIST_EXTEND                             78
+#define LOAD_ATTR                               79
+#define LOAD_COMMON_CONSTANT                    80
+#define LOAD_CONST                              81
+#define LOAD_DEREF                              82
+#define LOAD_FAST                               83
+#define LOAD_FAST_AND_CLEAR                     84
+#define LOAD_FAST_BORROW                        85
+#define LOAD_FAST_BORROW_LOAD_FAST_BORROW       86
+#define LOAD_FAST_CHECK                         87
+#define LOAD_FAST_LOAD_FAST                     88
+#define LOAD_FROM_DICT_OR_DEREF                 89
+#define LOAD_FROM_DICT_OR_GLOBALS               90
+#define LOAD_GLOBAL                             91
+#define LOAD_NAME                               92
+#define LOAD_SMALL_INT                          93
+#define LOAD_SPECIAL                            94
+#define LOAD_SUPER_ATTR                         95
+#define MAKE_CELL                               96
+#define MAP_ADD                                 97
+#define MATCH_CLASS                             98
+#define POP_JUMP_IF_FALSE                       99
+#define POP_JUMP_IF_NONE                       100
+#define POP_JUMP_IF_NOT_NONE                   101
+#define POP_JUMP_IF_TRUE                       102
+#define RAISE_VARARGS                          103
+#define RERAISE                                104
+#define SEND                                   105
+#define SET_ADD                                106
+#define SET_FUNCTION_ATTRIBUTE                 107
+#define SET_UPDATE                             108
+#define STORE_ATTR                             109
+#define STORE_DEREF                            110
+#define STORE_FAST                             111
+#define STORE_FAST_LOAD_FAST                   112
+#define STORE_FAST_STORE_FAST                  113
+#define STORE_GLOBAL                           114
+#define STORE_NAME                             115
+#define SWAP                                   116
+#define UNPACK_EX                              117
+#define UNPACK_SEQUENCE                        118

[truncated]

word-diff-align

git diff --no-index --histogram --color=always --unified=8 --word-diff-align data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
index f9173fd..ac6d4d9 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/old.h
+++ b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Include__opcode_ids.h/new.h
@@ -21,121 +21,120 @@ extern "C" {
 #define DELETE_SUBSCR                            8
 #define END_FOR                                  9
 #define END_SEND                                10
 #define EXIT_INIT_CHECK                         11
 #define FORMAT_SIMPLE                           12
 #define FORMAT_WITH_SPEC                        13
 #define GET_AITER                               14
 #define GET_ANEXT                               15
-#define GET_ITER                                16
+#define GET_LEN{+                                 16+}        # aligned 10->8 edited
 #define RESERVED                                17
-#define GET_LEN[-                                 18-]        # aligned 10->8 edited
-#define GET_YIELD_FROM_ITER                     19
-#define INTERPRETER_EXIT[-                        20-]        # aligned 12->10 edited
-#define LOAD_BUILD_CLASS[-                        21-]        # aligned 13->11 edited
-#define LOAD_LOCALS[-                             22-]        # aligned 14->12 edited
-#define MAKE_FUNCTION[-                           23-]        # aligned 15->13 edited
-#define MATCH_KEYS[-                              24-]        # aligned 16->14 edited
-#define MATCH_MAPPING[-                           25-]        # aligned 17->15 edited
-#define MATCH_SEQUENCE[-                          26-]        # aligned 18->16 edited
-#define NOP[-                                     27-]        # aligned 19->17 edited
-#define NOT_TAKEN[-                               28-]        # aligned 20->18 edited
-#define POP_EXCEPT[-                              29-]        # aligned 21->19 edited
-#define POP_ITER[-                                30-]        # aligned 22->20 edited
-#define POP_TOP[-                                 31-]        # aligned 23->21 edited
-#define PUSH_EXC_INFO[-                           32-]        # aligned 24->22 edited
-#define PUSH_NULL[-                               33-]        # aligned 25->23 edited
-#define RETURN_GENERATOR[-                        34-]        # aligned 26->24 edited
-#define RETURN_VALUE[-                            35-]        # aligned 27->25 edited
-#define SETUP_ANNOTATIONS[-                       36-]        # aligned 28->26 edited
-#define STORE_SLICE[-                             37-]        # aligned 29->27 edited
-#define STORE_SUBSCR[-                            38-]        # aligned 30->28 edited
-#define TO_BOOL[-                                 39-]        # aligned 31->29 edited
-#define UNARY_INVERT[-                            40-]        # aligned 32->30 edited
-#define UNARY_NEGATIVE[-                          41-]        # aligned 33->31 edited
-#define UNARY_NOT[-                               42-]        # aligned 34->32 edited
-#define WITH_EXCEPT_START[-                       43-]        # aligned 35->33 edited
-#define BINARY_OP[-                               44-]        # aligned 36->34 edited
-#define BUILD_INTERPOLATION[-                     45-]        # aligned 37->35 edited
-#define BUILD_LIST[-                              46-]        # aligned 38->36 edited
-#define BUILD_MAP[-                               47-]        # aligned 39->37 edited
-#define BUILD_SET[-                               48-]        # aligned 40->38 edited
-#define BUILD_SLICE[-                             49-]        # aligned 41->39 edited
-#define BUILD_STRING[-                            50-]        # aligned 42->40 edited
-#define BUILD_TUPLE[-                             51-]        # aligned 43->41 edited
-#define CALL[-                                    52-]        # aligned 44->42 edited
-#define CALL_INTRINSIC_1[-                        53-]        # aligned 45->43 edited
-#define CALL_INTRINSIC_2[-                        54-]        # aligned 46->44 edited
-#define CALL_KW[-                                 55-]        # aligned 47->45 edited
-#define COMPARE_OP[-                              56-]        # aligned 48->46 edited
-#define CONTAINS_OP[-                             57-]        # aligned 49->47 edited
-#define CONVERT_VALUE[-                           58-]        # aligned 50->48 edited
-#define COPY[-                                    59-]        # aligned 51->49 edited
-#define COPY_FREE_VARS[-                          60-]        # aligned 52->50 edited
-#define DELETE_ATTR[-                             61-]        # aligned 53->51 edited
-#define DELETE_DEREF[-                            62-]        # aligned 54->52 edited
-#define DELETE_FAST[-                             63-]        # aligned 55->53 edited
-#define DELETE_GLOBAL[-                           64-]        # aligned 56->54 edited
-#define DELETE_NAME[-                             65-]        # aligned 57->55 edited
-#define DICT_MERGE[-                              66-]        # aligned 58->56 edited
-#define DICT_UPDATE[-                             67-]        # aligned 59->57 edited
-#define END_ASYNC_FOR[-                           68-]        # aligned 60->58 edited
-#define EXTENDED_ARG[-                            69-]        # aligned 61->59 edited
-#define FOR_ITER[-                                70-]        # aligned 62->60 edited
-#define GET_AWAITABLE[-                           71-]        # aligned 63->61 edited
-#define IMPORT_FROM[-                             72-]        # aligned 64->63 edited
-#define IMPORT_NAME[-                             73-]        # aligned 65->64 edited
-#define IS_OP[-                                   74-]        # aligned 66->65 edited
-#define JUMP_BACKWARD[-                           75-]        # aligned 67->66 edited
-#define JUMP_BACKWARD_NO_INTERRUPT[-              76-]        # aligned 68->67 edited
-#define JUMP_FORWARD[-                            77-]        # aligned 69->68 edited
-#define LIST_APPEND[-                             78-]        # aligned 70->69 edited
-#define LIST_EXTEND[-                             79-]        # aligned 71->70 edited
-#define LOAD_ATTR[-                               80-]        # aligned 72->71 edited
-#define LOAD_COMMON_CONSTANT[-                    81-]        # aligned 73->72 edited
-#define LOAD_CONST[-                              82-]        # aligned 74->73 edited
-#define LOAD_DEREF[-                              83-]        # aligned 75->74 edited
-#define LOAD_FAST[-                               84-]        # aligned 76->75 edited
-#define LOAD_FAST_AND_CLEAR[-                     85-]        # aligned 77->76 edited
-#define LOAD_FAST_BORROW[-                        86-]        # aligned 78->77 edited
-#define LOAD_FAST_BORROW_LOAD_FAST_BORROW[-       87-]        # aligned 79->78 edited
-#define LOAD_FAST_CHECK[-                         88-]        # aligned 80->79 edited
-#define LOAD_FAST_LOAD_FAST[-                     89-]        # aligned 81->80 edited
-#define LOAD_FROM_DICT_OR_DEREF[-                 90-]        # aligned 82->81 edited
-#define LOAD_FROM_DICT_OR_GLOBALS[-               91-]        # aligned 83->82 edited
-#define LOAD_GLOBAL[-                             92-]        # aligned 84->83 edited
-#define LOAD_NAME[-                               93-]        # aligned 85->84 edited
-#define LOAD_SMALL_INT[-                          94-]        # aligned 86->85 edited
-#define LOAD_SPECIAL[-                            95-]        # aligned 87->86 edited
-#define LOAD_SUPER_ATTR[-                         96-]        # aligned 88->87 edited
-#define MAKE_CELL[-                               97-]        # aligned 89->88 edited
-#define MAP_ADD[-                                 98-]        # aligned 90->89 edited
-#define MATCH_CLASS[-                             99-]        # aligned 91->90 edited
-#define POP_JUMP_IF_FALSE[-                      100-]        # aligned 92->91 edited
-#define POP_JUMP_IF_NONE[-                       101-]        # aligned 93->92 edited
-#define POP_JUMP_IF_NOT_NONE[-                   102-]        # aligned 94->93 edited
-#define POP_JUMP_IF_TRUE[-                       103-]        # aligned 95->94 edited
-#define RAISE_VARARGS[-                          104-]        # aligned 96->95 edited
-#define RERAISE[-                                105-]        # aligned 97->96 edited
-#define SEND[-                                   106-]        # aligned 98->97 edited
-#define SET_ADD[-                                107-]        # aligned 99->98 edited
-#define SET_FUNCTION_ATTRIBUTE[-                 108-]        # aligned 100->99 edited
-#define SET_UPDATE[-                             109-]        # aligned 101->100 edited
-#define STORE_ATTR[-                             110-]        # aligned 102->101 edited
-#define STORE_DEREF[-                            111-]        # aligned 103->102 edited
-#define STORE_FAST[-                             112-]        # aligned 104->103 edited
-#define STORE_FAST_LOAD_FAST[-                   113-]        # aligned 105->104 edited
-#define STORE_FAST_STORE_FAST[-                  114-]        # aligned 106->105 edited
-#define STORE_GLOBAL[-                           115-]        # aligned 107->106 edited
-#define STORE_NAME[-                             116-]        # aligned 108->107 edited
-#define SWAP[-                                   117-]        # aligned 109->108 edited
-#define UNPACK_EX[-                              118-]        # aligned 110->109 edited
-#define UNPACK_SEQUENCE[-                        119-]        # aligned 111->110 edited
-#define YIELD_VALUE[-                            120-]        # aligned 112->111 edited
+#define INTERPRETER_EXIT{+                        18+}        # aligned 12->10 edited
+#define LOAD_BUILD_CLASS{+                        19+}        # aligned 13->11 edited
+#define LOAD_LOCALS{+                             20+}        # aligned 14->12 edited
+#define MAKE_FUNCTION{+                           21+}        # aligned 15->13 edited
+#define MATCH_KEYS{+                              22+}        # aligned 16->14 edited
+#define MATCH_MAPPING{+                           23+}        # aligned 17->15 edited
+#define MATCH_SEQUENCE{+                          24+}        # aligned 18->16 edited
+#define NOP{+                                     25+}        # aligned 19->17 edited
+#define NOT_TAKEN{+                               26+}        # aligned 20->18 edited
+#define POP_EXCEPT{+                              27+}        # aligned 21->19 edited
+#define POP_ITER{+                                28+}        # aligned 22->20 edited
+#define POP_TOP{+                                 29+}        # aligned 23->21 edited
+#define PUSH_EXC_INFO{+                           30+}        # aligned 24->22 edited
+#define PUSH_NULL{+                               31+}        # aligned 25->23 edited
+#define RETURN_GENERATOR{+                        32+}        # aligned 26->24 edited
+#define RETURN_VALUE{+                            33+}        # aligned 27->25 edited
+#define SETUP_ANNOTATIONS{+                       34+}        # aligned 28->26 edited
+#define STORE_SLICE{+                             35+}        # aligned 29->27 edited
+#define STORE_SUBSCR{+                            36+}        # aligned 30->28 edited
+#define TO_BOOL{+                                 37+}        # aligned 31->29 edited
+#define UNARY_INVERT{+                            38+}        # aligned 32->30 edited
+#define UNARY_NEGATIVE{+                          39+}        # aligned 33->31 edited
+#define UNARY_NOT{+                               40+}        # aligned 34->32 edited
+#define WITH_EXCEPT_START{+                       41+}        # aligned 35->33 edited
+#define BINARY_OP{+                               42+}        # aligned 36->34 edited
+#define BUILD_INTERPOLATION{+                     43+}        # aligned 37->35 edited
+#define BUILD_LIST{+                              44+}        # aligned 38->36 edited
+#define BUILD_MAP{+                               45+}        # aligned 39->37 edited
+#define BUILD_SET{+                               46+}        # aligned 40->38 edited
+#define BUILD_SLICE{+                             47+}        # aligned 41->39 edited
+#define BUILD_STRING{+                            48+}        # aligned 42->40 edited
+#define BUILD_TUPLE{+                             49+}        # aligned 43->41 edited
+#define CALL{+                                    50+}        # aligned 44->42 edited
+#define CALL_INTRINSIC_1{+                        51+}        # aligned 45->43 edited
+#define CALL_INTRINSIC_2{+                        52+}        # aligned 46->44 edited
+#define CALL_KW{+                                 53+}        # aligned 47->45 edited
+#define COMPARE_OP{+                              54+}        # aligned 48->46 edited
+#define CONTAINS_OP{+                             55+}        # aligned 49->47 edited
+#define CONVERT_VALUE{+                           56+}        # aligned 50->48 edited
+#define COPY{+                                    57+}        # aligned 51->49 edited
+#define COPY_FREE_VARS{+                          58+}        # aligned 52->50 edited
+#define DELETE_ATTR{+                             59+}        # aligned 53->51 edited
+#define DELETE_DEREF{+                            60+}        # aligned 54->52 edited
+#define DELETE_FAST{+                             61+}        # aligned 55->53 edited
+#define DELETE_GLOBAL{+                           62+}        # aligned 56->54 edited
+#define DELETE_NAME{+                             63+}        # aligned 57->55 edited
+#define DICT_MERGE{+                              64+}        # aligned 58->56 edited
+#define DICT_UPDATE{+                             65+}        # aligned 59->57 edited
+#define END_ASYNC_FOR{+                           66+}        # aligned 60->58 edited
+#define EXTENDED_ARG{+                            67+}        # aligned 61->59 edited
+#define FOR_ITER{+                                68+}        # aligned 62->60 edited
+#define GET_AWAITABLE{+                           69+}        # aligned 63->61 edited
+#define GET_ITER                                70
+#define IMPORT_FROM{+                             71+}        # aligned 64->63 edited
+#define IMPORT_NAME{+                             72+}        # aligned 65->64 edited
+#define IS_OP{+                                   73+}        # aligned 66->65 edited
+#define JUMP_BACKWARD{+                           74+}        # aligned 67->66 edited
+#define JUMP_BACKWARD_NO_INTERRUPT{+              75+}        # aligned 68->67 edited
+#define JUMP_FORWARD{+                            76+}        # aligned 69->68 edited
+#define LIST_APPEND{+                             77+}        # aligned 70->69 edited
+#define LIST_EXTEND{+                             78+}        # aligned 71->70 edited
+#define LOAD_ATTR{+                               79+}        # aligned 72->71 edited
+#define LOAD_COMMON_CONSTANT{+                    80+}        # aligned 73->72 edited
+#define LOAD_CONST{+                              81+}        # aligned 74->73 edited
+#define LOAD_DEREF{+                              82+}        # aligned 75->74 edited
+#define LOAD_FAST{+                               83+}        # aligned 76->75 edited
+#define LOAD_FAST_AND_CLEAR{+                     84+}        # aligned 77->76 edited
+#define LOAD_FAST_BORROW{+                        85+}        # aligned 78->77 edited
+#define LOAD_FAST_BORROW_LOAD_FAST_BORROW{+       86+}        # aligned 79->78 edited
+#define LOAD_FAST_CHECK{+                         87+}        # aligned 80->79 edited
+#define LOAD_FAST_LOAD_FAST{+                     88+}        # aligned 81->80 edited
+#define LOAD_FROM_DICT_OR_DEREF{+                 89+}        # aligned 82->81 edited
+#define LOAD_FROM_DICT_OR_GLOBALS{+               90+}        # aligned 83->82 edited
+#define LOAD_GLOBAL{+                             91+}        # aligned 84->83 edited
+#define LOAD_NAME{+                               92+}        # aligned 85->84 edited
+#define LOAD_SMALL_INT{+                          93+}        # aligned 86->85 edited
+#define LOAD_SPECIAL{+                            94+}        # aligned 87->86 edited
+#define LOAD_SUPER_ATTR{+                         95+}        # aligned 88->87 edited
+#define MAKE_CELL{+                               96+}        # aligned 89->88 edited
+#define MAP_ADD{+                                 97+}        # aligned 90->89 edited
+#define MATCH_CLASS{+                             98+}        # aligned 91->90 edited
+#define POP_JUMP_IF_FALSE{+                       99+}        # aligned 92->91 edited
+#define POP_JUMP_IF_NONE{+                       100+}        # aligned 93->92 edited
+#define POP_JUMP_IF_NOT_NONE{+                   101+}        # aligned 94->93 edited
+#define POP_JUMP_IF_TRUE{+                       102+}        # aligned 95->94 edited
+#define RAISE_VARARGS{+                          103+}        # aligned 96->95 edited
+#define RERAISE{+                                104+}        # aligned 97->96 edited
+#define SEND{+                                   105+}        # aligned 98->97 edited
+#define SET_ADD{+                                106+}        # aligned 99->98 edited
+#define SET_FUNCTION_ATTRIBUTE{+                 107+}        # aligned 100->99 edited
+#define SET_UPDATE{+                             108+}        # aligned 101->100 edited
+#define STORE_ATTR{+                             109+}        # aligned 102->101 edited
+#define STORE_DEREF{+                            110+}        # aligned 103->102 edited
+#define STORE_FAST{+                             111+}        # aligned 104->103 edited
+#define STORE_FAST_LOAD_FAST{+                   112+}        # aligned 105->104 edited
+#define STORE_FAST_STORE_FAST{+                  113+}        # aligned 106->105 edited
+#define STORE_GLOBAL{+                           114+}        # aligned 107->106 edited
+#define STORE_NAME{+                             115+}        # aligned 108->107 edited
+#define SWAP{+                                   116+}        # aligned 109->108 edited
+#define UNPACK_EX{+                              117+}        # aligned 110->109 edited
+#define UNPACK_SEQUENCE{+                        118+}        # aligned 111->110 edited

[truncated]

[008] cpython | 879c85f6e4ca__Lib___opcode_metadata.py

need=define-renumber align remote word
old: data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py
new: data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
note: opcode metadata renumbering

histogram

git diff --no-index --histogram --color=always --unified=8 data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
index 8d2c1ec..f5954e4 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
@@ -230,120 +230,119 @@ opmap = frozendict(
     DELETE_SUBSCR=8,
     END_FOR=9,
     END_SEND=10,
     EXIT_INIT_CHECK=11,
     FORMAT_SIMPLE=12,
     FORMAT_WITH_SPEC=13,
     GET_AITER=14,
     GET_ANEXT=15,
-    GET_ITER=16,
-    GET_LEN=18,
-    GET_YIELD_FROM_ITER=19,
-    INTERPRETER_EXIT=20,
-    LOAD_BUILD_CLASS=21,
-    LOAD_LOCALS=22,
-    MAKE_FUNCTION=23,
-    MATCH_KEYS=24,
-    MATCH_MAPPING=25,
-    MATCH_SEQUENCE=26,
-    NOP=27,
-    NOT_TAKEN=28,
-    POP_EXCEPT=29,
-    POP_ITER=30,
-    POP_TOP=31,
-    PUSH_EXC_INFO=32,
-    PUSH_NULL=33,
-    RETURN_GENERATOR=34,
-    RETURN_VALUE=35,
-    SETUP_ANNOTATIONS=36,
-    STORE_SLICE=37,
-    STORE_SUBSCR=38,
-    TO_BOOL=39,
-    UNARY_INVERT=40,
-    UNARY_NEGATIVE=41,
-    UNARY_NOT=42,
-    WITH_EXCEPT_START=43,
-    BINARY_OP=44,
-    BUILD_INTERPOLATION=45,
-    BUILD_LIST=46,
-    BUILD_MAP=47,
-    BUILD_SET=48,
-    BUILD_SLICE=49,
-    BUILD_STRING=50,
-    BUILD_TUPLE=51,
-    CALL=52,
-    CALL_INTRINSIC_1=53,
-    CALL_INTRINSIC_2=54,
-    CALL_KW=55,
-    COMPARE_OP=56,
-    CONTAINS_OP=57,
-    CONVERT_VALUE=58,
-    COPY=59,
-    COPY_FREE_VARS=60,
-    DELETE_ATTR=61,
-    DELETE_DEREF=62,
-    DELETE_FAST=63,
-    DELETE_GLOBAL=64,
-    DELETE_NAME=65,
-    DICT_MERGE=66,
-    DICT_UPDATE=67,
-    END_ASYNC_FOR=68,
-    EXTENDED_ARG=69,
-    FOR_ITER=70,
-    GET_AWAITABLE=71,
-    IMPORT_FROM=72,
-    IMPORT_NAME=73,
-    IS_OP=74,
-    JUMP_BACKWARD=75,
-    JUMP_BACKWARD_NO_INTERRUPT=76,
-    JUMP_FORWARD=77,
-    LIST_APPEND=78,
-    LIST_EXTEND=79,
-    LOAD_ATTR=80,
-    LOAD_COMMON_CONSTANT=81,
-    LOAD_CONST=82,
-    LOAD_DEREF=83,
-    LOAD_FAST=84,
-    LOAD_FAST_AND_CLEAR=85,
-    LOAD_FAST_BORROW=86,
-    LOAD_FAST_BORROW_LOAD_FAST_BORROW=87,
-    LOAD_FAST_CHECK=88,
-    LOAD_FAST_LOAD_FAST=89,
-    LOAD_FROM_DICT_OR_DEREF=90,
-    LOAD_FROM_DICT_OR_GLOBALS=91,
-    LOAD_GLOBAL=92,
-    LOAD_NAME=93,
-    LOAD_SMALL_INT=94,
-    LOAD_SPECIAL=95,
-    LOAD_SUPER_ATTR=96,
-    MAKE_CELL=97,
-    MAP_ADD=98,
-    MATCH_CLASS=99,
-    POP_JUMP_IF_FALSE=100,
-    POP_JUMP_IF_NONE=101,
-    POP_JUMP_IF_NOT_NONE=102,
-    POP_JUMP_IF_TRUE=103,
-    RAISE_VARARGS=104,
-    RERAISE=105,
-    SEND=106,
-    SET_ADD=107,
-    SET_FUNCTION_ATTRIBUTE=108,
-    SET_UPDATE=109,
-    STORE_ATTR=110,
-    STORE_DEREF=111,
-    STORE_FAST=112,
-    STORE_FAST_LOAD_FAST=113,
-    STORE_FAST_STORE_FAST=114,
-    STORE_GLOBAL=115,
-    STORE_NAME=116,
-    SWAP=117,
-    UNPACK_EX=118,
-    UNPACK_SEQUENCE=119,
-    YIELD_VALUE=120,
+    GET_LEN=16,
+    INTERPRETER_EXIT=18,
+    LOAD_BUILD_CLASS=19,
+    LOAD_LOCALS=20,
+    MAKE_FUNCTION=21,
+    MATCH_KEYS=22,
+    MATCH_MAPPING=23,
+    MATCH_SEQUENCE=24,
+    NOP=25,
+    NOT_TAKEN=26,
+    POP_EXCEPT=27,
+    POP_ITER=28,
+    POP_TOP=29,
+    PUSH_EXC_INFO=30,
+    PUSH_NULL=31,
+    RETURN_GENERATOR=32,
+    RETURN_VALUE=33,
+    SETUP_ANNOTATIONS=34,
+    STORE_SLICE=35,
+    STORE_SUBSCR=36,
+    TO_BOOL=37,
+    UNARY_INVERT=38,
+    UNARY_NEGATIVE=39,
+    UNARY_NOT=40,
+    WITH_EXCEPT_START=41,
+    BINARY_OP=42,
+    BUILD_INTERPOLATION=43,
+    BUILD_LIST=44,
+    BUILD_MAP=45,
+    BUILD_SET=46,
+    BUILD_SLICE=47,
+    BUILD_STRING=48,
+    BUILD_TUPLE=49,
+    CALL=50,
+    CALL_INTRINSIC_1=51,
+    CALL_INTRINSIC_2=52,
+    CALL_KW=53,
+    COMPARE_OP=54,
+    CONTAINS_OP=55,
+    CONVERT_VALUE=56,
+    COPY=57,
+    COPY_FREE_VARS=58,
+    DELETE_ATTR=59,
+    DELETE_DEREF=60,
+    DELETE_FAST=61,
+    DELETE_GLOBAL=62,
+    DELETE_NAME=63,
+    DICT_MERGE=64,
+    DICT_UPDATE=65,
+    END_ASYNC_FOR=66,
+    EXTENDED_ARG=67,
+    FOR_ITER=68,
+    GET_AWAITABLE=69,
+    GET_ITER=70,
+    IMPORT_FROM=71,
+    IMPORT_NAME=72,
+    IS_OP=73,
+    JUMP_BACKWARD=74,
+    JUMP_BACKWARD_NO_INTERRUPT=75,
+    JUMP_FORWARD=76,
+    LIST_APPEND=77,
+    LIST_EXTEND=78,
+    LOAD_ATTR=79,
+    LOAD_COMMON_CONSTANT=80,
+    LOAD_CONST=81,
+    LOAD_DEREF=82,
+    LOAD_FAST=83,
+    LOAD_FAST_AND_CLEAR=84,
+    LOAD_FAST_BORROW=85,
+    LOAD_FAST_BORROW_LOAD_FAST_BORROW=86,
+    LOAD_FAST_CHECK=87,
+    LOAD_FAST_LOAD_FAST=88,
+    LOAD_FROM_DICT_OR_DEREF=89,
+    LOAD_FROM_DICT_OR_GLOBALS=90,
+    LOAD_GLOBAL=91,
+    LOAD_NAME=92,
+    LOAD_SMALL_INT=93,
+    LOAD_SPECIAL=94,
+    LOAD_SUPER_ATTR=95,
+    MAKE_CELL=96,
+    MAP_ADD=97,
+    MATCH_CLASS=98,
+    POP_JUMP_IF_FALSE=99,
+    POP_JUMP_IF_NONE=100,
+    POP_JUMP_IF_NOT_NONE=101,
+    POP_JUMP_IF_TRUE=102,
+    RAISE_VARARGS=103,
+    RERAISE=104,
+    SEND=105,
+    SET_ADD=106,
+    SET_FUNCTION_ATTRIBUTE=107,
+    SET_UPDATE=108,
+    STORE_ATTR=109,
+    STORE_DEREF=110,
+    STORE_FAST=111,
+    STORE_FAST_LOAD_FAST=112,
+    STORE_FAST_STORE_FAST=113,
+    STORE_GLOBAL=114,
+    STORE_NAME=115,
+    SWAP=116,
+    UNPACK_EX=117,
+    UNPACK_SEQUENCE=118,
+    YIELD_VALUE=119,

[truncated]

word-diff

git diff --no-index --histogram --color=always --unified=8 --word-diff=plain data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
index 8d2c1ec..f5954e4 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
@@ -230,120 +230,119 @@ opmap = frozendict(
    DELETE_SUBSCR=8,
    END_FOR=9,
    END_SEND=10,
    EXIT_INIT_CHECK=11,
    FORMAT_SIMPLE=12,
    FORMAT_WITH_SPEC=13,
    GET_AITER=14,
    GET_ANEXT=15,
    [-GET_ITER=16,-]
[-    GET_LEN=18,-]
[-    GET_YIELD_FROM_ITER=19,-]
[-    INTERPRETER_EXIT=20,-]
[-    LOAD_BUILD_CLASS=21,-]
[-    LOAD_LOCALS=22,-]
[-    MAKE_FUNCTION=23,-]
[-    MATCH_KEYS=24,-]
[-    MATCH_MAPPING=25,-]
[-    MATCH_SEQUENCE=26,-]
[-    NOP=27,-]
[-    NOT_TAKEN=28,-]
[-    POP_EXCEPT=29,-]
[-    POP_ITER=30,-]
[-    POP_TOP=31,-]
[-    PUSH_EXC_INFO=32,-]
[-    PUSH_NULL=33,-]
[-    RETURN_GENERATOR=34,-]
[-    RETURN_VALUE=35,-]
[-    SETUP_ANNOTATIONS=36,-]
[-    STORE_SLICE=37,-]
[-    STORE_SUBSCR=38,-]
[-    TO_BOOL=39,-]
[-    UNARY_INVERT=40,-]
[-    UNARY_NEGATIVE=41,-]
[-    UNARY_NOT=42,-]
[-    WITH_EXCEPT_START=43,-]
[-    BINARY_OP=44,-]
[-    BUILD_INTERPOLATION=45,-]
[-    BUILD_LIST=46,-]
[-    BUILD_MAP=47,-]
[-    BUILD_SET=48,-]
[-    BUILD_SLICE=49,-]
[-    BUILD_STRING=50,-]
[-    BUILD_TUPLE=51,-]
[-    CALL=52,-]
[-    CALL_INTRINSIC_1=53,-]
[-    CALL_INTRINSIC_2=54,-]
[-    CALL_KW=55,-]
[-    COMPARE_OP=56,-]
[-    CONTAINS_OP=57,-]
[-    CONVERT_VALUE=58,-]
[-    COPY=59,-]
[-    COPY_FREE_VARS=60,-]
[-    DELETE_ATTR=61,-]
[-    DELETE_DEREF=62,-]
[-    DELETE_FAST=63,-]
[-    DELETE_GLOBAL=64,-]
[-    DELETE_NAME=65,-]
[-    DICT_MERGE=66,-]
[-    DICT_UPDATE=67,-]
[-    END_ASYNC_FOR=68,-]
[-    EXTENDED_ARG=69,-]
[-    FOR_ITER=70,-]
[-    GET_AWAITABLE=71,-]
[-    IMPORT_FROM=72,-]
[-    IMPORT_NAME=73,-]
[-    IS_OP=74,-]
[-    JUMP_BACKWARD=75,-]
[-    JUMP_BACKWARD_NO_INTERRUPT=76,-]
[-    JUMP_FORWARD=77,-]
[-    LIST_APPEND=78,-]
[-    LIST_EXTEND=79,-]
[-    LOAD_ATTR=80,-]
[-    LOAD_COMMON_CONSTANT=81,-]
[-    LOAD_CONST=82,-]
[-    LOAD_DEREF=83,-]
[-    LOAD_FAST=84,-]
[-    LOAD_FAST_AND_CLEAR=85,-]
[-    LOAD_FAST_BORROW=86,-]
[-    LOAD_FAST_BORROW_LOAD_FAST_BORROW=87,-]
[-    LOAD_FAST_CHECK=88,-]
[-    LOAD_FAST_LOAD_FAST=89,-]
[-    LOAD_FROM_DICT_OR_DEREF=90,-]
[-    LOAD_FROM_DICT_OR_GLOBALS=91,-]
[-    LOAD_GLOBAL=92,-]
[-    LOAD_NAME=93,-]
[-    LOAD_SMALL_INT=94,-]
[-    LOAD_SPECIAL=95,-]
[-    LOAD_SUPER_ATTR=96,-]
[-    MAKE_CELL=97,-]
[-    MAP_ADD=98,-]
[-    MATCH_CLASS=99,-]
[-    POP_JUMP_IF_FALSE=100,-]
[-    POP_JUMP_IF_NONE=101,-]
[-    POP_JUMP_IF_NOT_NONE=102,-]
[-    POP_JUMP_IF_TRUE=103,-]
[-    RAISE_VARARGS=104,-]
[-    RERAISE=105,-]
[-    SEND=106,-]
[-    SET_ADD=107,-]
[-    SET_FUNCTION_ATTRIBUTE=108,-]
[-    SET_UPDATE=109,-]
[-    STORE_ATTR=110,-]
[-    STORE_DEREF=111,-]
[-    STORE_FAST=112,-]
[-    STORE_FAST_LOAD_FAST=113,-]
[-    STORE_FAST_STORE_FAST=114,-]
[-    STORE_GLOBAL=115,-]
[-    STORE_NAME=116,-]
[-    SWAP=117,-]
[-    UNPACK_EX=118,-]
[-    UNPACK_SEQUENCE=119,-]
[-    YIELD_VALUE=120,-]{+GET_LEN=16,+}
{+    INTERPRETER_EXIT=18,+}
{+    LOAD_BUILD_CLASS=19,+}
{+    LOAD_LOCALS=20,+}
{+    MAKE_FUNCTION=21,+}
{+    MATCH_KEYS=22,+}
{+    MATCH_MAPPING=23,+}
{+    MATCH_SEQUENCE=24,+}
{+    NOP=25,+}
{+    NOT_TAKEN=26,+}
{+    POP_EXCEPT=27,+}
{+    POP_ITER=28,+}
{+    POP_TOP=29,+}
{+    PUSH_EXC_INFO=30,+}
{+    PUSH_NULL=31,+}
{+    RETURN_GENERATOR=32,+}
{+    RETURN_VALUE=33,+}
{+    SETUP_ANNOTATIONS=34,+}
{+    STORE_SLICE=35,+}
{+    STORE_SUBSCR=36,+}
{+    TO_BOOL=37,+}
{+    UNARY_INVERT=38,+}
{+    UNARY_NEGATIVE=39,+}
{+    UNARY_NOT=40,+}
{+    WITH_EXCEPT_START=41,+}
{+    BINARY_OP=42,+}
{+    BUILD_INTERPOLATION=43,+}
{+    BUILD_LIST=44,+}
{+    BUILD_MAP=45,+}
{+    BUILD_SET=46,+}
{+    BUILD_SLICE=47,+}
{+    BUILD_STRING=48,+}
{+    BUILD_TUPLE=49,+}
{+    CALL=50,+}
{+    CALL_INTRINSIC_1=51,+}
{+    CALL_INTRINSIC_2=52,+}
{+    CALL_KW=53,+}
{+    COMPARE_OP=54,+}
{+    CONTAINS_OP=55,+}
{+    CONVERT_VALUE=56,+}
{+    COPY=57,+}
{+    COPY_FREE_VARS=58,+}
{+    DELETE_ATTR=59,+}
{+    DELETE_DEREF=60,+}
{+    DELETE_FAST=61,+}
{+    DELETE_GLOBAL=62,+}
{+    DELETE_NAME=63,+}
{+    DICT_MERGE=64,+}
{+    DICT_UPDATE=65,+}
{+    END_ASYNC_FOR=66,+}
{+    EXTENDED_ARG=67,+}
{+    FOR_ITER=68,+}
{+    GET_AWAITABLE=69,+}
{+    GET_ITER=70,+}
{+    IMPORT_FROM=71,+}
{+    IMPORT_NAME=72,+}
{+    IS_OP=73,+}
{+    JUMP_BACKWARD=74,+}
{+    JUMP_BACKWARD_NO_INTERRUPT=75,+}
{+    JUMP_FORWARD=76,+}
{+    LIST_APPEND=77,+}
{+    LIST_EXTEND=78,+}
{+    LOAD_ATTR=79,+}
{+    LOAD_COMMON_CONSTANT=80,+}
{+    LOAD_CONST=81,+}
{+    LOAD_DEREF=82,+}
{+    LOAD_FAST=83,+}
{+    LOAD_FAST_AND_CLEAR=84,+}
{+    LOAD_FAST_BORROW=85,+}
{+    LOAD_FAST_BORROW_LOAD_FAST_BORROW=86,+}
{+    LOAD_FAST_CHECK=87,+}
{+    LOAD_FAST_LOAD_FAST=88,+}
{+    LOAD_FROM_DICT_OR_DEREF=89,+}
{+    LOAD_FROM_DICT_OR_GLOBALS=90,+}
{+    LOAD_GLOBAL=91,+}
{+    LOAD_NAME=92,+}
{+    LOAD_SMALL_INT=93,+}
{+    LOAD_SPECIAL=94,+}
{+    LOAD_SUPER_ATTR=95,+}
{+    MAKE_CELL=96,+}
{+    MAP_ADD=97,+}
{+    MATCH_CLASS=98,+}
{+    POP_JUMP_IF_FALSE=99,+}
{+    POP_JUMP_IF_NONE=100,+}
{+    POP_JUMP_IF_NOT_NONE=101,+}
{+    POP_JUMP_IF_TRUE=102,+}
{+    RAISE_VARARGS=103,+}
{+    RERAISE=104,+}
{+    SEND=105,+}
{+    SET_ADD=106,+}
{+    SET_FUNCTION_ATTRIBUTE=107,+}
{+    SET_UPDATE=108,+}
{+    STORE_ATTR=109,+}
{+    STORE_DEREF=110,+}
{+    STORE_FAST=111,+}
{+    STORE_FAST_LOAD_FAST=112,+}
{+    STORE_FAST_STORE_FAST=113,+}
{+    STORE_GLOBAL=114,+}
{+    STORE_NAME=115,+}
{+    SWAP=116,+}
{+    UNPACK_EX=117,+}
{+    UNPACK_SEQUENCE=118,+}
{+    YIELD_VALUE=119,+}
    INSTRUMENTED_END_FOR=233,

[truncated]

color-moved

git diff --no-index --histogram --color=always --unified=8 --color-moved=blocks data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
index 8d2c1ec..f5954e4 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
@@ -230,120 +230,119 @@ opmap = frozendict(
     DELETE_SUBSCR=8,
     END_FOR=9,
     END_SEND=10,
     EXIT_INIT_CHECK=11,
     FORMAT_SIMPLE=12,
     FORMAT_WITH_SPEC=13,
     GET_AITER=14,
     GET_ANEXT=15,
-    GET_ITER=16,
-    GET_LEN=18,
-    GET_YIELD_FROM_ITER=19,
-    INTERPRETER_EXIT=20,
-    LOAD_BUILD_CLASS=21,
-    LOAD_LOCALS=22,
-    MAKE_FUNCTION=23,
-    MATCH_KEYS=24,
-    MATCH_MAPPING=25,
-    MATCH_SEQUENCE=26,
-    NOP=27,
-    NOT_TAKEN=28,
-    POP_EXCEPT=29,
-    POP_ITER=30,
-    POP_TOP=31,
-    PUSH_EXC_INFO=32,
-    PUSH_NULL=33,
-    RETURN_GENERATOR=34,
-    RETURN_VALUE=35,
-    SETUP_ANNOTATIONS=36,
-    STORE_SLICE=37,
-    STORE_SUBSCR=38,
-    TO_BOOL=39,
-    UNARY_INVERT=40,
-    UNARY_NEGATIVE=41,
-    UNARY_NOT=42,
-    WITH_EXCEPT_START=43,
-    BINARY_OP=44,
-    BUILD_INTERPOLATION=45,
-    BUILD_LIST=46,
-    BUILD_MAP=47,
-    BUILD_SET=48,
-    BUILD_SLICE=49,
-    BUILD_STRING=50,
-    BUILD_TUPLE=51,
-    CALL=52,
-    CALL_INTRINSIC_1=53,
-    CALL_INTRINSIC_2=54,
-    CALL_KW=55,
-    COMPARE_OP=56,
-    CONTAINS_OP=57,
-    CONVERT_VALUE=58,
-    COPY=59,
-    COPY_FREE_VARS=60,
-    DELETE_ATTR=61,
-    DELETE_DEREF=62,
-    DELETE_FAST=63,
-    DELETE_GLOBAL=64,
-    DELETE_NAME=65,
-    DICT_MERGE=66,
-    DICT_UPDATE=67,
-    END_ASYNC_FOR=68,
-    EXTENDED_ARG=69,
-    FOR_ITER=70,
-    GET_AWAITABLE=71,
-    IMPORT_FROM=72,
-    IMPORT_NAME=73,
-    IS_OP=74,
-    JUMP_BACKWARD=75,
-    JUMP_BACKWARD_NO_INTERRUPT=76,
-    JUMP_FORWARD=77,
-    LIST_APPEND=78,
-    LIST_EXTEND=79,
-    LOAD_ATTR=80,
-    LOAD_COMMON_CONSTANT=81,
-    LOAD_CONST=82,
-    LOAD_DEREF=83,
-    LOAD_FAST=84,
-    LOAD_FAST_AND_CLEAR=85,
-    LOAD_FAST_BORROW=86,
-    LOAD_FAST_BORROW_LOAD_FAST_BORROW=87,
-    LOAD_FAST_CHECK=88,
-    LOAD_FAST_LOAD_FAST=89,
-    LOAD_FROM_DICT_OR_DEREF=90,
-    LOAD_FROM_DICT_OR_GLOBALS=91,
-    LOAD_GLOBAL=92,
-    LOAD_NAME=93,
-    LOAD_SMALL_INT=94,
-    LOAD_SPECIAL=95,
-    LOAD_SUPER_ATTR=96,
-    MAKE_CELL=97,
-    MAP_ADD=98,
-    MATCH_CLASS=99,
-    POP_JUMP_IF_FALSE=100,
-    POP_JUMP_IF_NONE=101,
-    POP_JUMP_IF_NOT_NONE=102,
-    POP_JUMP_IF_TRUE=103,
-    RAISE_VARARGS=104,
-    RERAISE=105,
-    SEND=106,
-    SET_ADD=107,
-    SET_FUNCTION_ATTRIBUTE=108,
-    SET_UPDATE=109,
-    STORE_ATTR=110,
-    STORE_DEREF=111,
-    STORE_FAST=112,
-    STORE_FAST_LOAD_FAST=113,
-    STORE_FAST_STORE_FAST=114,
-    STORE_GLOBAL=115,
-    STORE_NAME=116,
-    SWAP=117,
-    UNPACK_EX=118,
-    UNPACK_SEQUENCE=119,
-    YIELD_VALUE=120,
+    GET_LEN=16,
+    INTERPRETER_EXIT=18,
+    LOAD_BUILD_CLASS=19,
+    LOAD_LOCALS=20,
+    MAKE_FUNCTION=21,
+    MATCH_KEYS=22,
+    MATCH_MAPPING=23,
+    MATCH_SEQUENCE=24,
+    NOP=25,
+    NOT_TAKEN=26,
+    POP_EXCEPT=27,
+    POP_ITER=28,
+    POP_TOP=29,
+    PUSH_EXC_INFO=30,
+    PUSH_NULL=31,
+    RETURN_GENERATOR=32,
+    RETURN_VALUE=33,
+    SETUP_ANNOTATIONS=34,
+    STORE_SLICE=35,
+    STORE_SUBSCR=36,
+    TO_BOOL=37,
+    UNARY_INVERT=38,
+    UNARY_NEGATIVE=39,
+    UNARY_NOT=40,
+    WITH_EXCEPT_START=41,
+    BINARY_OP=42,
+    BUILD_INTERPOLATION=43,
+    BUILD_LIST=44,
+    BUILD_MAP=45,
+    BUILD_SET=46,
+    BUILD_SLICE=47,
+    BUILD_STRING=48,
+    BUILD_TUPLE=49,
+    CALL=50,
+    CALL_INTRINSIC_1=51,
+    CALL_INTRINSIC_2=52,
+    CALL_KW=53,
+    COMPARE_OP=54,
+    CONTAINS_OP=55,
+    CONVERT_VALUE=56,
+    COPY=57,
+    COPY_FREE_VARS=58,
+    DELETE_ATTR=59,
+    DELETE_DEREF=60,
+    DELETE_FAST=61,
+    DELETE_GLOBAL=62,
+    DELETE_NAME=63,
+    DICT_MERGE=64,
+    DICT_UPDATE=65,
+    END_ASYNC_FOR=66,
+    EXTENDED_ARG=67,
+    FOR_ITER=68,
+    GET_AWAITABLE=69,
+    GET_ITER=70,
+    IMPORT_FROM=71,
+    IMPORT_NAME=72,
+    IS_OP=73,
+    JUMP_BACKWARD=74,
+    JUMP_BACKWARD_NO_INTERRUPT=75,
+    JUMP_FORWARD=76,
+    LIST_APPEND=77,
+    LIST_EXTEND=78,
+    LOAD_ATTR=79,
+    LOAD_COMMON_CONSTANT=80,
+    LOAD_CONST=81,
+    LOAD_DEREF=82,
+    LOAD_FAST=83,
+    LOAD_FAST_AND_CLEAR=84,
+    LOAD_FAST_BORROW=85,
+    LOAD_FAST_BORROW_LOAD_FAST_BORROW=86,
+    LOAD_FAST_CHECK=87,
+    LOAD_FAST_LOAD_FAST=88,
+    LOAD_FROM_DICT_OR_DEREF=89,
+    LOAD_FROM_DICT_OR_GLOBALS=90,
+    LOAD_GLOBAL=91,
+    LOAD_NAME=92,
+    LOAD_SMALL_INT=93,
+    LOAD_SPECIAL=94,
+    LOAD_SUPER_ATTR=95,
+    MAKE_CELL=96,
+    MAP_ADD=97,
+    MATCH_CLASS=98,
+    POP_JUMP_IF_FALSE=99,
+    POP_JUMP_IF_NONE=100,
+    POP_JUMP_IF_NOT_NONE=101,
+    POP_JUMP_IF_TRUE=102,
+    RAISE_VARARGS=103,
+    RERAISE=104,
+    SEND=105,
+    SET_ADD=106,
+    SET_FUNCTION_ATTRIBUTE=107,
+    SET_UPDATE=108,
+    STORE_ATTR=109,
+    STORE_DEREF=110,
+    STORE_FAST=111,
+    STORE_FAST_LOAD_FAST=112,
+    STORE_FAST_STORE_FAST=113,
+    STORE_GLOBAL=114,
+    STORE_NAME=115,
+    SWAP=116,
+    UNPACK_EX=117,
+    UNPACK_SEQUENCE=118,
+    YIELD_VALUE=119,

[truncated]

word-diff-align

git diff --no-index --histogram --color=always --unified=8 --word-diff-align data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
index 8d2c1ec..f5954e4 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/879c85f6e4ca__Lib___opcode_metadata.py/new.py
@@ -230,120 +230,119 @@ opmap = frozendict(
     DELETE_SUBSCR=8,
     END_FOR=9,
     END_SEND=10,
     EXIT_INIT_CHECK=11,
     FORMAT_SIMPLE=12,
     FORMAT_WITH_SPEC=13,
     GET_AITER=14,
     GET_ANEXT=15,
-    GET_ITER=16,
-    GET_LEN=[-18-],        # aligned 9->8 edited
-    GET_YIELD_FROM_ITER=19,
-    INTERPRETER_EXIT=[-20-],        # aligned 11->9 edited
-    LOAD_BUILD_CLASS=[-21-],        # aligned 12->10 edited
-    LOAD_LOCALS=[-22-],        # aligned 13->11 edited
-    MAKE_FUNCTION=[-23-],        # aligned 14->12 edited
-    MATCH_KEYS=[-24-],        # aligned 15->13 edited
-    MATCH_MAPPING=[-25-],        # aligned 16->14 edited
-    MATCH_SEQUENCE=[-26-],        # aligned 17->15 edited
-    NOP=[-27-],        # aligned 18->16 edited
-    NOT_TAKEN=[-28-],        # aligned 19->17 edited
-    POP_EXCEPT=[-29-],        # aligned 20->18 edited
-    POP_ITER=[-30-],        # aligned 21->19 edited
-    POP_TOP=[-31-],        # aligned 22->20 edited
-    PUSH_EXC_INFO=[-32-],        # aligned 23->21 edited
-    PUSH_NULL=[-33-],        # aligned 24->22 edited
-    RETURN_GENERATOR=[-34-],        # aligned 25->23 edited
-    RETURN_VALUE=[-35-],        # aligned 26->24 edited
-    SETUP_ANNOTATIONS=[-36-],        # aligned 27->25 edited
-    STORE_SLICE=[-37-],        # aligned 28->26 edited
-    STORE_SUBSCR=[-38-],        # aligned 29->27 edited
-    TO_BOOL=[-39-],        # aligned 30->28 edited
-    UNARY_INVERT=[-40-],        # aligned 31->29 edited
-    UNARY_NEGATIVE=[-41-],        # aligned 32->30 edited
-    UNARY_NOT=[-42-],        # aligned 33->31 edited
-    WITH_EXCEPT_START=[-43-],        # aligned 34->32 edited
-    BINARY_OP=[-44-],        # aligned 35->33 edited
-    BUILD_INTERPOLATION=[-45-],        # aligned 36->34 edited
-    BUILD_LIST=[-46-],        # aligned 37->35 edited
-    BUILD_MAP=[-47-],        # aligned 38->36 edited
-    BUILD_SET=[-48-],        # aligned 39->37 edited
-    BUILD_SLICE=[-49-],        # aligned 40->38 edited
-    BUILD_STRING=[-50-],        # aligned 41->39 edited
-    BUILD_TUPLE=[-51-],        # aligned 42->40 edited
-    CALL=[-52-],        # aligned 43->41 edited
-    CALL_INTRINSIC_1=[-53-],        # aligned 44->42 edited
-    CALL_INTRINSIC_2=[-54-],        # aligned 45->43 edited
-    CALL_KW=[-55-],        # aligned 46->44 edited
-    COMPARE_OP=[-56-],        # aligned 47->45 edited
-    CONTAINS_OP=[-57-],        # aligned 48->46 edited
-    CONVERT_VALUE=[-58-],        # aligned 49->47 edited
-    COPY=[-59-],        # aligned 50->48 edited
-    COPY_FREE_VARS=[-60-],        # aligned 51->49 edited
-    DELETE_ATTR=[-61-],        # aligned 52->50 edited
-    DELETE_DEREF=[-62-],        # aligned 53->51 edited
-    DELETE_FAST=[-63-],        # aligned 54->52 edited
-    DELETE_GLOBAL=[-64-],        # aligned 55->53 edited
-    DELETE_NAME=[-65-],        # aligned 56->54 edited
-    DICT_MERGE=[-66-],        # aligned 57->55 edited
-    DICT_UPDATE=[-67-],        # aligned 58->56 edited
-    END_ASYNC_FOR=[-68-],        # aligned 59->57 edited
-    EXTENDED_ARG=[-69-],        # aligned 60->58 edited
-    FOR_ITER=[-70-],        # aligned 61->59 edited
-    GET_AWAITABLE=[-71-],        # aligned 62->60 edited
-    IMPORT_FROM=[-72-],        # aligned 63->62 edited
-    IMPORT_NAME=[-73-],        # aligned 64->63 edited
-    IS_OP=[-74-],        # aligned 65->64 edited
-    JUMP_BACKWARD=[-75-],        # aligned 66->65 edited
-    JUMP_BACKWARD_NO_INTERRUPT=[-76-],        # aligned 67->66 edited
-    JUMP_FORWARD=[-77-],        # aligned 68->67 edited
-    LIST_APPEND=[-78-],        # aligned 69->68 edited
-    LIST_EXTEND=[-79-],        # aligned 70->69 edited
-    LOAD_ATTR=[-80-],        # aligned 71->70 edited
-    LOAD_COMMON_CONSTANT=[-81-],        # aligned 72->71 edited
-    LOAD_CONST=[-82-],        # aligned 73->72 edited
-    LOAD_DEREF=[-83-],        # aligned 74->73 edited
-    LOAD_FAST=[-84-],        # aligned 75->74 edited
-    LOAD_FAST_AND_CLEAR=[-85-],        # aligned 76->75 edited
-    LOAD_FAST_BORROW=[-86-],        # aligned 77->76 edited
-    LOAD_FAST_BORROW_LOAD_FAST_BORROW=[-87-],        # aligned 78->77 edited
-    LOAD_FAST_CHECK=[-88-],        # aligned 79->78 edited
-    LOAD_FAST_LOAD_FAST=[-89-],        # aligned 80->79 edited
-    LOAD_FROM_DICT_OR_DEREF=[-90-],        # aligned 81->80 edited
-    LOAD_FROM_DICT_OR_GLOBALS=[-91-],        # aligned 82->81 edited
-    LOAD_GLOBAL=[-92-],        # aligned 83->82 edited
-    LOAD_NAME=[-93-],        # aligned 84->83 edited
-    LOAD_SMALL_INT=[-94-],        # aligned 85->84 edited
-    LOAD_SPECIAL=[-95-],        # aligned 86->85 edited
-    LOAD_SUPER_ATTR=[-96-],        # aligned 87->86 edited
-    MAKE_CELL=[-97-],        # aligned 88->87 edited
-    MAP_ADD=[-98-],        # aligned 89->88 edited
-    MATCH_CLASS=[-99-],        # aligned 90->89 edited
-    POP_JUMP_IF_FALSE=[-100-],        # aligned 91->90 edited
-    POP_JUMP_IF_NONE=[-101-],        # aligned 92->91 edited
-    POP_JUMP_IF_NOT_NONE=[-102-],        # aligned 93->92 edited
-    POP_JUMP_IF_TRUE=[-103-],        # aligned 94->93 edited
-    RAISE_VARARGS=[-104-],        # aligned 95->94 edited
-    RERAISE=[-105-],        # aligned 96->95 edited
-    SEND=[-106-],        # aligned 97->96 edited
-    SET_ADD=[-107-],        # aligned 98->97 edited
-    SET_FUNCTION_ATTRIBUTE=[-108-],        # aligned 99->98 edited
-    SET_UPDATE=[-109-],        # aligned 100->99 edited
-    STORE_ATTR=[-110-],        # aligned 101->100 edited
-    STORE_DEREF=[-111-],        # aligned 102->101 edited
-    STORE_FAST=[-112-],        # aligned 103->102 edited
-    STORE_FAST_LOAD_FAST=[-113-],        # aligned 104->103 edited
-    STORE_FAST_STORE_FAST=[-114-],        # aligned 105->104 edited
-    STORE_GLOBAL=[-115-],        # aligned 106->105 edited
-    STORE_NAME=[-116-],        # aligned 107->106 edited
-    SWAP=[-117-],        # aligned 108->107 edited
-    UNPACK_EX=[-118-],        # aligned 109->108 edited
-    UNPACK_SEQUENCE=[-119-],        # aligned 110->109 edited
-    YIELD_VALUE=[-120-],        # aligned 111->110 edited
+    GET_LEN={+16+},        # aligned 9->8 edited
+    INTERPRETER_EXIT={+18+},        # aligned 11->9 edited
+    LOAD_BUILD_CLASS={+19+},        # aligned 12->10 edited
+    LOAD_LOCALS={+20+},        # aligned 13->11 edited
+    MAKE_FUNCTION={+21+},        # aligned 14->12 edited
+    MATCH_KEYS={+22+},        # aligned 15->13 edited
+    MATCH_MAPPING={+23+},        # aligned 16->14 edited
+    MATCH_SEQUENCE={+24+},        # aligned 17->15 edited
+    NOP={+25+},        # aligned 18->16 edited
+    NOT_TAKEN={+26+},        # aligned 19->17 edited
+    POP_EXCEPT={+27+},        # aligned 20->18 edited
+    POP_ITER={+28+},        # aligned 21->19 edited
+    POP_TOP={+29+},        # aligned 22->20 edited
+    PUSH_EXC_INFO={+30+},        # aligned 23->21 edited
+    PUSH_NULL={+31+},        # aligned 24->22 edited
+    RETURN_GENERATOR={+32+},        # aligned 25->23 edited
+    RETURN_VALUE={+33+},        # aligned 26->24 edited
+    SETUP_ANNOTATIONS={+34+},        # aligned 27->25 edited
+    STORE_SLICE={+35+},        # aligned 28->26 edited
+    STORE_SUBSCR={+36+},        # aligned 29->27 edited
+    TO_BOOL={+37+},        # aligned 30->28 edited
+    UNARY_INVERT={+38+},        # aligned 31->29 edited
+    UNARY_NEGATIVE={+39+},        # aligned 32->30 edited
+    UNARY_NOT={+40+},        # aligned 33->31 edited
+    WITH_EXCEPT_START={+41+},        # aligned 34->32 edited
+    BINARY_OP={+42+},        # aligned 35->33 edited
+    BUILD_INTERPOLATION={+43+},        # aligned 36->34 edited
+    BUILD_LIST={+44+},        # aligned 37->35 edited
+    BUILD_MAP={+45+},        # aligned 38->36 edited
+    BUILD_SET={+46+},        # aligned 39->37 edited
+    BUILD_SLICE={+47+},        # aligned 40->38 edited
+    BUILD_STRING={+48+},        # aligned 41->39 edited
+    BUILD_TUPLE={+49+},        # aligned 42->40 edited
+    CALL={+50+},        # aligned 43->41 edited
+    CALL_INTRINSIC_1={+51+},        # aligned 44->42 edited
+    CALL_INTRINSIC_2={+52+},        # aligned 45->43 edited
+    CALL_KW={+53+},        # aligned 46->44 edited
+    COMPARE_OP={+54+},        # aligned 47->45 edited
+    CONTAINS_OP={+55+},        # aligned 48->46 edited
+    CONVERT_VALUE={+56+},        # aligned 49->47 edited
+    COPY={+57+},        # aligned 50->48 edited
+    COPY_FREE_VARS={+58+},        # aligned 51->49 edited
+    DELETE_ATTR={+59+},        # aligned 52->50 edited
+    DELETE_DEREF={+60+},        # aligned 53->51 edited
+    DELETE_FAST={+61+},        # aligned 54->52 edited
+    DELETE_GLOBAL={+62+},        # aligned 55->53 edited
+    DELETE_NAME={+63+},        # aligned 56->54 edited
+    DICT_MERGE={+64+},        # aligned 57->55 edited
+    DICT_UPDATE={+65+},        # aligned 58->56 edited
+    END_ASYNC_FOR={+66+},        # aligned 59->57 edited
+    EXTENDED_ARG={+67+},        # aligned 60->58 edited
+    FOR_ITER={+68+},        # aligned 61->59 edited
+    GET_AWAITABLE={+69+},        # aligned 62->60 edited
+    GET_ITER=70,
+    IMPORT_FROM={+71+},        # aligned 63->62 edited
+    IMPORT_NAME={+72+},        # aligned 64->63 edited
+    IS_OP={+73+},        # aligned 65->64 edited
+    JUMP_BACKWARD={+74+},        # aligned 66->65 edited
+    JUMP_BACKWARD_NO_INTERRUPT={+75+},        # aligned 67->66 edited
+    JUMP_FORWARD={+76+},        # aligned 68->67 edited
+    LIST_APPEND={+77+},        # aligned 69->68 edited
+    LIST_EXTEND={+78+},        # aligned 70->69 edited
+    LOAD_ATTR={+79+},        # aligned 71->70 edited
+    LOAD_COMMON_CONSTANT={+80+},        # aligned 72->71 edited
+    LOAD_CONST={+81+},        # aligned 73->72 edited
+    LOAD_DEREF={+82+},        # aligned 74->73 edited
+    LOAD_FAST={+83+},        # aligned 75->74 edited
+    LOAD_FAST_AND_CLEAR={+84+},        # aligned 76->75 edited
+    LOAD_FAST_BORROW={+85+},        # aligned 77->76 edited
+    LOAD_FAST_BORROW_LOAD_FAST_BORROW={+86+},        # aligned 78->77 edited
+    LOAD_FAST_CHECK={+87+},        # aligned 79->78 edited
+    LOAD_FAST_LOAD_FAST={+88+},        # aligned 80->79 edited
+    LOAD_FROM_DICT_OR_DEREF={+89+},        # aligned 81->80 edited
+    LOAD_FROM_DICT_OR_GLOBALS={+90+},        # aligned 82->81 edited
+    LOAD_GLOBAL={+91+},        # aligned 83->82 edited
+    LOAD_NAME={+92+},        # aligned 84->83 edited
+    LOAD_SMALL_INT={+93+},        # aligned 85->84 edited
+    LOAD_SPECIAL={+94+},        # aligned 86->85 edited
+    LOAD_SUPER_ATTR={+95+},        # aligned 87->86 edited
+    MAKE_CELL={+96+},        # aligned 88->87 edited
+    MAP_ADD={+97+},        # aligned 89->88 edited
+    MATCH_CLASS={+98+},        # aligned 90->89 edited
+    POP_JUMP_IF_FALSE={+99+},        # aligned 91->90 edited
+    POP_JUMP_IF_NONE={+100+},        # aligned 92->91 edited
+    POP_JUMP_IF_NOT_NONE={+101+},        # aligned 93->92 edited
+    POP_JUMP_IF_TRUE={+102+},        # aligned 94->93 edited
+    RAISE_VARARGS={+103+},        # aligned 95->94 edited
+    RERAISE={+104+},        # aligned 96->95 edited
+    SEND={+105+},        # aligned 97->96 edited
+    SET_ADD={+106+},        # aligned 98->97 edited
+    SET_FUNCTION_ATTRIBUTE={+107+},        # aligned 99->98 edited
+    SET_UPDATE={+108+},        # aligned 100->99 edited
+    STORE_ATTR={+109+},        # aligned 101->100 edited
+    STORE_DEREF={+110+},        # aligned 102->101 edited
+    STORE_FAST={+111+},        # aligned 103->102 edited
+    STORE_FAST_LOAD_FAST={+112+},        # aligned 104->103 edited
+    STORE_FAST_STORE_FAST={+113+},        # aligned 105->104 edited
+    STORE_GLOBAL={+114+},        # aligned 106->105 edited
+    STORE_NAME={+115+},        # aligned 107->106 edited
+    SWAP={+116+},        # aligned 108->107 edited
+    UNPACK_EX={+117+},        # aligned 109->108 edited
+    UNPACK_SEQUENCE={+118+},        # aligned 110->109 edited
+    YIELD_VALUE={+119+},        # aligned 111->110 edited

[truncated]

[009] cpython | 3d0824aef261__Include__opcode_ids.h

need=define-renumber align remote word
old: data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h
new: data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
note: smaller opcode define renumbering

histogram

git diff --no-index --histogram --color=always --unified=8 data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h b/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
index c463684..f9173fd 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h
+++ b/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
@@ -196,31 +196,32 @@ extern "C" {
 #define LOAD_ATTR_PROPERTY                     190
 #define LOAD_ATTR_SLOT                         191
 #define LOAD_ATTR_WITH_HINT                    192
 #define LOAD_GLOBAL_BUILTIN                    193
 #define LOAD_GLOBAL_MODULE                     194
 #define LOAD_SUPER_ATTR_ATTR                   195
 #define LOAD_SUPER_ATTR_METHOD                 196
 #define RESUME_CHECK                           197
-#define SEND_GEN                               198
-#define STORE_ATTR_INSTANCE_VALUE              199
-#define STORE_ATTR_SLOT                        200
-#define STORE_ATTR_WITH_HINT                   201
-#define STORE_SUBSCR_DICT                      202
-#define STORE_SUBSCR_LIST_INT                  203
-#define TO_BOOL_ALWAYS_TRUE                    204
-#define TO_BOOL_BOOL                           205
-#define TO_BOOL_INT                            206
-#define TO_BOOL_LIST                           207
-#define TO_BOOL_NONE                           208
-#define TO_BOOL_STR                            209
-#define UNPACK_SEQUENCE_LIST                   210
-#define UNPACK_SEQUENCE_TUPLE                  211
-#define UNPACK_SEQUENCE_TWO_TUPLE              212
+#define RESUME_CHECK_JIT                       198
+#define SEND_GEN                               199
+#define STORE_ATTR_INSTANCE_VALUE              200
+#define STORE_ATTR_SLOT                        201
+#define STORE_ATTR_WITH_HINT                   202
+#define STORE_SUBSCR_DICT                      203
+#define STORE_SUBSCR_LIST_INT                  204
+#define TO_BOOL_ALWAYS_TRUE                    205
+#define TO_BOOL_BOOL                           206
+#define TO_BOOL_INT                            207
+#define TO_BOOL_LIST                           208
+#define TO_BOOL_NONE                           209
+#define TO_BOOL_STR                            210
+#define UNPACK_SEQUENCE_LIST                   211
+#define UNPACK_SEQUENCE_TUPLE                  212
+#define UNPACK_SEQUENCE_TWO_TUPLE              213
 #define INSTRUMENTED_END_FOR                   233
 #define INSTRUMENTED_POP_ITER                  234
 #define INSTRUMENTED_END_SEND                  235
 #define INSTRUMENTED_FOR_ITER                  236
 #define INSTRUMENTED_INSTRUCTION               237
 #define INSTRUMENTED_JUMP_FORWARD              238
 #define INSTRUMENTED_NOT_TAKEN                 239
 #define INSTRUMENTED_POP_JUMP_IF_TRUE          240

word-diff

git diff --no-index --histogram --color=always --unified=8 --word-diff=plain data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h b/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
index c463684..f9173fd 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h
+++ b/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
@@ -196,31 +196,32 @@ extern "C" {
#define LOAD_ATTR_PROPERTY                     190
#define LOAD_ATTR_SLOT                         191
#define LOAD_ATTR_WITH_HINT                    192
#define LOAD_GLOBAL_BUILTIN                    193
#define LOAD_GLOBAL_MODULE                     194
#define LOAD_SUPER_ATTR_ATTR                   195
#define LOAD_SUPER_ATTR_METHOD                 196
#define RESUME_CHECK                           197
#define [-SEND_GEN-]{+RESUME_CHECK_JIT+}                       198
#define [-STORE_ATTR_INSTANCE_VALUE-]{+SEND_GEN+}                               199
#define [-STORE_ATTR_SLOT-]{+STORE_ATTR_INSTANCE_VALUE+}              200
#define [-STORE_ATTR_WITH_HINT-]{+STORE_ATTR_SLOT+}                        201
#define [-STORE_SUBSCR_DICT-]{+STORE_ATTR_WITH_HINT+}                   202
#define [-STORE_SUBSCR_LIST_INT-]{+STORE_SUBSCR_DICT+}                      203
#define [-TO_BOOL_ALWAYS_TRUE-]{+STORE_SUBSCR_LIST_INT+}                  204
#define [-TO_BOOL_BOOL-]{+TO_BOOL_ALWAYS_TRUE+}                    205
#define [-TO_BOOL_INT-]{+TO_BOOL_BOOL+}                           206
#define [-TO_BOOL_LIST-]{+TO_BOOL_INT+}                            207
#define [-TO_BOOL_NONE-]{+TO_BOOL_LIST+}                           208
#define [-TO_BOOL_STR-]{+TO_BOOL_NONE+}                           209
#define [-UNPACK_SEQUENCE_LIST-]{+TO_BOOL_STR+}                            210
#define [-UNPACK_SEQUENCE_TUPLE-]{+UNPACK_SEQUENCE_LIST+}                   211
#define [-UNPACK_SEQUENCE_TWO_TUPLE-]{+UNPACK_SEQUENCE_TUPLE+}                  212
{+#define UNPACK_SEQUENCE_TWO_TUPLE              213+}
#define INSTRUMENTED_END_FOR                   233
#define INSTRUMENTED_POP_ITER                  234
#define INSTRUMENTED_END_SEND                  235
#define INSTRUMENTED_FOR_ITER                  236
#define INSTRUMENTED_INSTRUCTION               237
#define INSTRUMENTED_JUMP_FORWARD              238
#define INSTRUMENTED_NOT_TAKEN                 239
#define INSTRUMENTED_POP_JUMP_IF_TRUE          240

color-moved

git diff --no-index --histogram --color=always --unified=8 --color-moved=blocks data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h b/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
index c463684..f9173fd 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h
+++ b/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
@@ -196,31 +196,32 @@ extern "C" {
 #define LOAD_ATTR_PROPERTY                     190
 #define LOAD_ATTR_SLOT                         191
 #define LOAD_ATTR_WITH_HINT                    192
 #define LOAD_GLOBAL_BUILTIN                    193
 #define LOAD_GLOBAL_MODULE                     194
 #define LOAD_SUPER_ATTR_ATTR                   195
 #define LOAD_SUPER_ATTR_METHOD                 196
 #define RESUME_CHECK                           197
-#define SEND_GEN                               198
-#define STORE_ATTR_INSTANCE_VALUE              199
-#define STORE_ATTR_SLOT                        200
-#define STORE_ATTR_WITH_HINT                   201
-#define STORE_SUBSCR_DICT                      202
-#define STORE_SUBSCR_LIST_INT                  203
-#define TO_BOOL_ALWAYS_TRUE                    204
-#define TO_BOOL_BOOL                           205
-#define TO_BOOL_INT                            206
-#define TO_BOOL_LIST                           207
-#define TO_BOOL_NONE                           208
-#define TO_BOOL_STR                            209
-#define UNPACK_SEQUENCE_LIST                   210
-#define UNPACK_SEQUENCE_TUPLE                  211
-#define UNPACK_SEQUENCE_TWO_TUPLE              212
+#define RESUME_CHECK_JIT                       198
+#define SEND_GEN                               199
+#define STORE_ATTR_INSTANCE_VALUE              200
+#define STORE_ATTR_SLOT                        201
+#define STORE_ATTR_WITH_HINT                   202
+#define STORE_SUBSCR_DICT                      203
+#define STORE_SUBSCR_LIST_INT                  204
+#define TO_BOOL_ALWAYS_TRUE                    205
+#define TO_BOOL_BOOL                           206
+#define TO_BOOL_INT                            207
+#define TO_BOOL_LIST                           208
+#define TO_BOOL_NONE                           209
+#define TO_BOOL_STR                            210
+#define UNPACK_SEQUENCE_LIST                   211
+#define UNPACK_SEQUENCE_TUPLE                  212
+#define UNPACK_SEQUENCE_TWO_TUPLE              213
 #define INSTRUMENTED_END_FOR                   233
 #define INSTRUMENTED_POP_ITER                  234
 #define INSTRUMENTED_END_SEND                  235
 #define INSTRUMENTED_FOR_ITER                  236
 #define INSTRUMENTED_INSTRUCTION               237
 #define INSTRUMENTED_JUMP_FORWARD              238
 #define INSTRUMENTED_NOT_TAKEN                 239
 #define INSTRUMENTED_POP_JUMP_IF_TRUE          240

word-diff-align

git diff --no-index --histogram --color=always --unified=8 --word-diff-align data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h b/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
index c463684..f9173fd 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/old.h
+++ b/data/experiments/server_expand_1/git_pairs/cpython/3d0824aef261__Include__opcode_ids.h/new.h
@@ -196,31 +196,32 @@ extern "C" {
 #define LOAD_ATTR_PROPERTY                     190
 #define LOAD_ATTR_SLOT                         191
 #define LOAD_ATTR_WITH_HINT                    192
 #define LOAD_GLOBAL_BUILTIN                    193
 #define LOAD_GLOBAL_MODULE                     194
 #define LOAD_SUPER_ATTR_ATTR                   195
 #define LOAD_SUPER_ATTR_METHOD                 196
 #define RESUME_CHECK                           197
-#define SEND_GEN[-                               198-]        # aligned 8->9 edited
-#define STORE_ATTR_INSTANCE_VALUE[-              199-]        # aligned 9->10 edited
-#define STORE_ATTR_SLOT[-                        200-]        # aligned 10->11 edited
-#define STORE_ATTR_WITH_HINT[-                   201-]        # aligned 11->12 edited
-#define STORE_SUBSCR_DICT[-                      202-]        # aligned 12->13 edited
-#define STORE_SUBSCR_LIST_INT[-                  203-]        # aligned 13->14 edited
-#define TO_BOOL_ALWAYS_TRUE[-                    204-]        # aligned 14->15 edited
-#define TO_BOOL_BOOL[-                           205-]        # aligned 15->16 edited
-#define TO_BOOL_INT[-                            206-]        # aligned 16->17 edited
-#define TO_BOOL_LIST[-                           207-]        # aligned 17->18 edited
-#define TO_BOOL_NONE[-                           208-]        # aligned 18->19 edited
-#define TO_BOOL_STR[-                            209-]        # aligned 19->20 edited
-#define UNPACK_SEQUENCE_LIST[-                   210-]        # aligned 20->21 edited
-#define UNPACK_SEQUENCE_TUPLE[-                  211-]        # aligned 21->22 edited
-#define UNPACK_SEQUENCE_TWO_TUPLE[-              212-]        # aligned 22->23 edited
+#define RESUME_CHECK_JIT                       198
+#define SEND_GEN{+                               199+}        # aligned 8->9 edited
+#define STORE_ATTR_INSTANCE_VALUE{+              200+}        # aligned 9->10 edited
+#define STORE_ATTR_SLOT{+                        201+}        # aligned 10->11 edited
+#define STORE_ATTR_WITH_HINT{+                   202+}        # aligned 11->12 edited
+#define STORE_SUBSCR_DICT{+                      203+}        # aligned 12->13 edited
+#define STORE_SUBSCR_LIST_INT{+                  204+}        # aligned 13->14 edited
+#define TO_BOOL_ALWAYS_TRUE{+                    205+}        # aligned 14->15 edited
+#define TO_BOOL_BOOL{+                           206+}        # aligned 15->16 edited
+#define TO_BOOL_INT{+                            207+}        # aligned 16->17 edited
+#define TO_BOOL_LIST{+                           208+}        # aligned 17->18 edited
+#define TO_BOOL_NONE{+                           209+}        # aligned 18->19 edited
+#define TO_BOOL_STR{+                            210+}        # aligned 19->20 edited
+#define UNPACK_SEQUENCE_LIST{+                   211+}        # aligned 20->21 edited
+#define UNPACK_SEQUENCE_TUPLE{+                  212+}        # aligned 21->22 edited
+#define UNPACK_SEQUENCE_TWO_TUPLE{+              213+}        # aligned 22->23 edited
 #define INSTRUMENTED_END_FOR                   233
 #define INSTRUMENTED_POP_ITER                  234
 #define INSTRUMENTED_END_SEND                  235
 #define INSTRUMENTED_FOR_ITER                  236
 #define INSTRUMENTED_INSTRUCTION               237
 #define INSTRUMENTED_JUMP_FORWARD              238
 #define INSTRUMENTED_NOT_TAKEN                 239
 #define INSTRUMENTED_POP_JUMP_IF_TRUE          240

[010] cpython | 349639cfa461__Lib__opcode.py

need=container-rewrite align word
old: data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py
new: data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
note: dict/frozendict-like opcode data rewrite

histogram

git diff --no-index --histogram --color=always --unified=8 data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
index f016b8d..165f42b 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
@@ -41,86 +41,86 @@ _intrinsic_2_descs = _opcode.get_intrinsic2_descs()
 _special_method_names = _opcode.get_special_method_names()
 _common_constants = [builtins.AssertionError, builtins.NotImplementedError,
                      builtins.tuple, builtins.all, builtins.any, builtins.list,
                      builtins.set]
 _nb_ops = _opcode.get_nb_ops()
 
 hascompare = [opmap["COMPARE_OP"]]
 
-_cache_format = {
-    "LOAD_GLOBAL": {
-        "counter": 1,
-        "index": 1,
-        "module_keys_version": 1,
-        "builtin_keys_version": 1,
-    },
-    "BINARY_OP": {
-        "counter": 1,
-        "descr": 4,
-    },
-    "UNPACK_SEQUENCE": {
-        "counter": 1,
-    },
-    "COMPARE_OP": {
-        "counter": 1,
-    },
-    "CONTAINS_OP": {
-        "counter": 1,
-    },
-    "FOR_ITER": {
-        "counter": 1,
-    },
-    "LOAD_SUPER_ATTR": {
-        "counter": 1,
-    },
-    "LOAD_ATTR": {
-        "counter": 1,
-        "version": 2,
-        "keys_version": 2,
-        "descr": 4,
-    },
-    "STORE_ATTR": {
-        "counter": 1,
-        "version": 2,
-        "index": 1,
-    },
-    "CALL": {
-        "counter": 1,
-        "func_version": 2,
-    },
-    "CALL_KW": {
-        "counter": 1,
-        "func_version": 2,
-    },
-    "CALL_FUNCTION_EX": {
-        "counter": 1,
-    },
-    "STORE_SUBSCR": {
-        "counter": 1,
-    },
-    "SEND": {
-        "counter": 1,
-    },
-    "JUMP_BACKWARD": {
-        "counter": 1,
-    },
-    "TO_BOOL": {
-        "counter": 1,
-        "version": 2,
-    },
-    "POP_JUMP_IF_TRUE": {
-        "counter": 1,
-    },
-    "POP_JUMP_IF_FALSE": {
-        "counter": 1,
-    },
-    "POP_JUMP_IF_NONE": {
-        "counter": 1,
-    },
-    "POP_JUMP_IF_NOT_NONE": {
-        "counter": 1,
-    },
-}
+_cache_format = frozendict(
+    LOAD_GLOBAL=frozendict(
+        counter=1,
+        index=1,
+        module_keys_version=1,
+        builtin_keys_version=1,
+    ),
+    BINARY_OP=frozendict(
+        counter=1,
+        descr=4,
+    ),
+    UNPACK_SEQUENCE=frozendict(
+        counter=1,
+    ),
+    COMPARE_OP=frozendict(
+        counter=1,
+    ),
+    CONTAINS_OP=frozendict(
+        counter=1,
+    ),
+    FOR_ITER=frozendict(
+        counter=1,
+    ),
+    LOAD_SUPER_ATTR=frozendict(
+        counter=1,
+    ),
+    LOAD_ATTR=frozendict(
+        counter=1,
+        version=2,
+        keys_version=2,
+        descr=4,
+    ),
+    STORE_ATTR=frozendict(
+        counter=1,
+        version=2,
+        index=1,
+    ),
+    CALL=frozendict(
+        counter=1,
+        func_version=2,
+    ),
+    CALL_KW=frozendict(
+        counter=1,
+        func_version=2,
+    ),
+    CALL_FUNCTION_EX=frozendict(
+        counter=1,
+    ),
+    STORE_SUBSCR=frozendict(
+        counter=1,
+    ),
+    SEND=frozendict(
+        counter=1,
+    ),
+    JUMP_BACKWARD=frozendict(
+        counter=1,
+    ),
+    TO_BOOL=frozendict(
+        counter=1,
+        version=2,
+    ),
+    POP_JUMP_IF_TRUE=frozendict(
+        counter=1,
+    ),
+    POP_JUMP_IF_FALSE=frozendict(
+        counter=1,
+    ),
+    POP_JUMP_IF_NONE=frozendict(
+        counter=1,
+    ),
+    POP_JUMP_IF_NOT_NONE=frozendict(
+        counter=1,
+    ),
+)
 
-_inline_cache_entries = {
+_inline_cache_entries = frozendict({
     name : sum(value.values()) for (name, value) in _cache_format.items()
-}
+})

word-diff

git diff --no-index --histogram --color=always --unified=8 --word-diff=plain data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
index f016b8d..165f42b 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
@@ -41,86 +41,86 @@ _intrinsic_2_descs = _opcode.get_intrinsic2_descs()
_special_method_names = _opcode.get_special_method_names()
_common_constants = [builtins.AssertionError, builtins.NotImplementedError,
                     builtins.tuple, builtins.all, builtins.any, builtins.list,
                     builtins.set]
_nb_ops = _opcode.get_nb_ops()

hascompare = [opmap["COMPARE_OP"]]

_cache_format = [-{-]
[-    "LOAD_GLOBAL": {-]
[-        "counter": 1,-]
[-        "index": 1,-]
[-        "module_keys_version": 1,-]
[-        "builtin_keys_version": 1,-]
[-    },-]
[-    "BINARY_OP": {-]
[-        "counter": 1,-]
[-        "descr": 4,-]
[-    },-]
[-    "UNPACK_SEQUENCE": {-]
[-        "counter": 1,-]
[-    },-]
[-    "COMPARE_OP": {-]
[-        "counter": 1,-]
[-    },-]
[-    "CONTAINS_OP": {-]
[-        "counter": 1,-]
[-    },-]
[-    "FOR_ITER": {-]
[-        "counter": 1,-]
[-    },-]
[-    "LOAD_SUPER_ATTR": {-]
[-        "counter": 1,-]
[-    },-]
[-    "LOAD_ATTR": {-]
[-        "counter": 1,-]
[-        "version": 2,-]
[-        "keys_version": 2,-]
[-        "descr": 4,-]
[-    },-]
[-    "STORE_ATTR": {-]
[-        "counter": 1,-]
[-        "version": 2,-]
[-        "index": 1,-]
[-    },-]
[-    "CALL": {-]
[-        "counter": 1,-]
[-        "func_version": 2,-]
[-    },-]
[-    "CALL_KW": {-]
[-        "counter": 1,-]
[-        "func_version": 2,-]
[-    },-]
[-    "CALL_FUNCTION_EX": {-]
[-        "counter": 1,-]
[-    },-]
[-    "STORE_SUBSCR": {-]
[-        "counter": 1,-]
[-    },-]
[-    "SEND": {-]
[-        "counter": 1,-]
[-    },-]
[-    "JUMP_BACKWARD": {-]
[-        "counter": 1,-]
[-    },-]
[-    "TO_BOOL": {-]
[-        "counter": 1,-]
[-        "version": 2,-]
[-    },-]
[-    "POP_JUMP_IF_TRUE": {-]
[-        "counter": 1,-]
[-    },-]
[-    "POP_JUMP_IF_FALSE": {-]
[-        "counter": 1,-]
[-    },-]
[-    "POP_JUMP_IF_NONE": {-]
[-        "counter": 1,-]
[-    },-]
[-    "POP_JUMP_IF_NOT_NONE": {-]
[-        "counter": 1,-]
[-    },-]
[-}-]{+frozendict(+}
{+    LOAD_GLOBAL=frozendict(+}
{+        counter=1,+}
{+        index=1,+}
{+        module_keys_version=1,+}
{+        builtin_keys_version=1,+}
{+    ),+}
{+    BINARY_OP=frozendict(+}
{+        counter=1,+}
{+        descr=4,+}
{+    ),+}
{+    UNPACK_SEQUENCE=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+    COMPARE_OP=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+    CONTAINS_OP=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+    FOR_ITER=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+    LOAD_SUPER_ATTR=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+    LOAD_ATTR=frozendict(+}
{+        counter=1,+}
{+        version=2,+}
{+        keys_version=2,+}
{+        descr=4,+}
{+    ),+}
{+    STORE_ATTR=frozendict(+}
{+        counter=1,+}
{+        version=2,+}
{+        index=1,+}
{+    ),+}
{+    CALL=frozendict(+}
{+        counter=1,+}
{+        func_version=2,+}
{+    ),+}
{+    CALL_KW=frozendict(+}
{+        counter=1,+}
{+        func_version=2,+}
{+    ),+}
{+    CALL_FUNCTION_EX=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+    STORE_SUBSCR=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+    SEND=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+    JUMP_BACKWARD=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+    TO_BOOL=frozendict(+}
{+        counter=1,+}
{+        version=2,+}
{+    ),+}
{+    POP_JUMP_IF_TRUE=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+    POP_JUMP_IF_FALSE=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+    POP_JUMP_IF_NONE=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+    POP_JUMP_IF_NOT_NONE=frozendict(+}
{+        counter=1,+}
{+    ),+}
{+)+}

_inline_cache_entries = [-{-]{+frozendict({+}
    name : sum(value.values()) for (name, value) in _cache_format.items()
[-}-]{+})+}

color-moved

git diff --no-index --histogram --color=always --unified=8 --color-moved=blocks data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
index f016b8d..165f42b 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
@@ -41,86 +41,86 @@ _intrinsic_2_descs = _opcode.get_intrinsic2_descs()
 _special_method_names = _opcode.get_special_method_names()
 _common_constants = [builtins.AssertionError, builtins.NotImplementedError,
                      builtins.tuple, builtins.all, builtins.any, builtins.list,
                      builtins.set]
 _nb_ops = _opcode.get_nb_ops()
 
 hascompare = [opmap["COMPARE_OP"]]
 
-_cache_format = {
-    "LOAD_GLOBAL": {
-        "counter": 1,
-        "index": 1,
-        "module_keys_version": 1,
-        "builtin_keys_version": 1,
-    },
-    "BINARY_OP": {
-        "counter": 1,
-        "descr": 4,
-    },
-    "UNPACK_SEQUENCE": {
-        "counter": 1,
-    },
-    "COMPARE_OP": {
-        "counter": 1,
-    },
-    "CONTAINS_OP": {
-        "counter": 1,
-    },
-    "FOR_ITER": {
-        "counter": 1,
-    },
-    "LOAD_SUPER_ATTR": {
-        "counter": 1,
-    },
-    "LOAD_ATTR": {
-        "counter": 1,
-        "version": 2,
-        "keys_version": 2,
-        "descr": 4,
-    },
-    "STORE_ATTR": {
-        "counter": 1,
-        "version": 2,
-        "index": 1,
-    },
-    "CALL": {
-        "counter": 1,
-        "func_version": 2,
-    },
-    "CALL_KW": {
-        "counter": 1,
-        "func_version": 2,
-    },
-    "CALL_FUNCTION_EX": {
-        "counter": 1,
-    },
-    "STORE_SUBSCR": {
-        "counter": 1,
-    },
-    "SEND": {
-        "counter": 1,
-    },
-    "JUMP_BACKWARD": {
-        "counter": 1,
-    },
-    "TO_BOOL": {
-        "counter": 1,
-        "version": 2,
-    },
-    "POP_JUMP_IF_TRUE": {
-        "counter": 1,
-    },
-    "POP_JUMP_IF_FALSE": {
-        "counter": 1,
-    },
-    "POP_JUMP_IF_NONE": {
-        "counter": 1,
-    },
-    "POP_JUMP_IF_NOT_NONE": {
-        "counter": 1,
-    },
-}
+_cache_format = frozendict(
+    LOAD_GLOBAL=frozendict(
+        counter=1,
+        index=1,
+        module_keys_version=1,
+        builtin_keys_version=1,
+    ),
+    BINARY_OP=frozendict(
+        counter=1,
+        descr=4,
+    ),
+    UNPACK_SEQUENCE=frozendict(
+        counter=1,
+    ),
+    COMPARE_OP=frozendict(
+        counter=1,
+    ),
+    CONTAINS_OP=frozendict(
+        counter=1,
+    ),
+    FOR_ITER=frozendict(
+        counter=1,
+    ),
+    LOAD_SUPER_ATTR=frozendict(
+        counter=1,
+    ),
+    LOAD_ATTR=frozendict(
+        counter=1,
+        version=2,
+        keys_version=2,
+        descr=4,
+    ),
+    STORE_ATTR=frozendict(
+        counter=1,
+        version=2,
+        index=1,
+    ),
+    CALL=frozendict(
+        counter=1,
+        func_version=2,
+    ),
+    CALL_KW=frozendict(
+        counter=1,
+        func_version=2,
+    ),
+    CALL_FUNCTION_EX=frozendict(
+        counter=1,
+    ),
+    STORE_SUBSCR=frozendict(
+        counter=1,
+    ),
+    SEND=frozendict(
+        counter=1,
+    ),
+    JUMP_BACKWARD=frozendict(
+        counter=1,
+    ),
+    TO_BOOL=frozendict(
+        counter=1,
+        version=2,
+    ),
+    POP_JUMP_IF_TRUE=frozendict(
+        counter=1,
+    ),
+    POP_JUMP_IF_FALSE=frozendict(
+        counter=1,
+    ),
+    POP_JUMP_IF_NONE=frozendict(
+        counter=1,
+    ),
+    POP_JUMP_IF_NOT_NONE=frozendict(
+        counter=1,
+    ),
+)
 
-_inline_cache_entries = {
+_inline_cache_entries = frozendict({
     name : sum(value.values()) for (name, value) in _cache_format.items()
-}
+})

word-diff-align

git diff --no-index --histogram --color=always --unified=8 --word-diff-align data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
index f016b8d..165f42b 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/349639cfa461__Lib__opcode.py/new.py
@@ -41,86 +41,86 @@ _intrinsic_2_descs = _opcode.get_intrinsic2_descs()
 _special_method_names = _opcode.get_special_method_names()
 _common_constants = [builtins.AssertionError, builtins.NotImplementedError,
                      builtins.tuple, builtins.all, builtins.any, builtins.list,
                      builtins.set]
 _nb_ops = _opcode.get_nb_ops()
 
 hascompare = [opmap["COMPARE_OP"]]
 
-_cache_format =[- {-]        # aligned 8->8 edited
-[-    "-]LOAD_GLOBAL[-": {-]        # aligned 9->9 edited
-[-        "-]counter[-": -]1,        # aligned 10->10 edited
-[-        "-]index[-": -]1,        # aligned 11->11 edited
-[-        "-]module_keys_version[-": -]1,        # aligned 12->12 edited
-[-        "-]builtin_keys_version[-": -]1,        # aligned 13->13 edited
-[-    }-],        # aligned 14->14 edited
-[-    "-]BINARY_OP[-": {-]        # aligned 15->15 edited
-[-        "-]counter[-": -]1,        # aligned 16->16 edited
-[-        "-]descr[-": -]4,        # aligned 17->17 edited
-[-    }-],        # aligned 18->18 edited
-[-    "-]UNPACK_SEQUENCE[-": {-]        # aligned 19->19 edited
-[-        "-]counter[-": -]1,        # aligned 20->20 edited
-[-    }-],        # aligned 21->21 edited
-    "COMPARE_OP": {
-[-        "-]counter[-": -]1,        # aligned 23->23 edited
-[-    }-],        # aligned 24->24 edited
-    "CONTAINS_OP": {
-[-        "-]counter[-": -]1,        # aligned 26->26 edited
-[-    }-],        # aligned 27->27 edited
-    "FOR_ITER": {
-[-        "-]counter[-": -]1,        # aligned 29->29 edited
-[-    }-],        # aligned 30->30 edited
-    "LOAD_SUPER_ATTR": {
-[-        "-]counter[-": -]1,        # aligned 32->32 edited
-[-    }-],        # aligned 33->33 edited
-[-    "-]LOAD_ATTR[-": {-]        # aligned 34->34 edited
-[-        "-]counter[-": -]1,        # aligned 35->35 edited
-[-        "-]version[-": -]2,        # aligned 36->36 edited
-[-        "-]keys_version[-": -]2,        # aligned 37->37 edited
-[-        "-]descr[-": -]4,        # aligned 38->38 edited
-[-    }-],        # aligned 39->39 edited
-[-    "-]STORE_ATTR[-": {-]        # aligned 40->40 edited
-[-        "-]counter[-": -]1,        # aligned 41->41 edited
-[-        "-]version[-": -]2,        # aligned 42->42 edited
-[-        "-]index[-": -]1,        # aligned 43->43 edited
-[-    }-],        # aligned 44->44 edited
-[-    "-]CALL[-": {-]        # aligned 45->45 edited
-[-        "-]counter[-": -]1,        # aligned 46->46 edited
-[-        "-]func_version[-": -]2,        # aligned 47->47 edited
-[-    }-],        # aligned 48->48 edited
-[-    "-]CALL_KW[-": {-]        # aligned 49->49 edited
-[-        "-]counter[-": -]1,        # aligned 50->50 edited
-[-        "-]func_version[-": -]2,        # aligned 51->51 edited
-[-    }-],        # aligned 52->52 edited
-[-    "-]CALL_FUNCTION_EX[-": {-]        # aligned 53->53 edited
-[-        "-]counter[-": -]1,        # aligned 54->54 edited
-[-    }-],        # aligned 55->55 edited
-    "STORE_SUBSCR": {
-[-        "-]counter[-": -]1,        # aligned 57->57 edited
-[-    }-],        # aligned 58->58 edited
-    "SEND": {
-[-        "-]counter[-": -]1,        # aligned 60->60 edited
-[-    }-],        # aligned 61->61 edited
-    "JUMP_BACKWARD": {
-[-        "-]counter[-": -]1,        # aligned 63->63 edited
-[-    }-],        # aligned 64->64 edited
-[-    "-]TO_BOOL[-": {-]        # aligned 65->65 edited
-[-        "-]counter[-": -]1,        # aligned 66->66 edited
-[-        "-]version[-": -]2,        # aligned 67->67 edited
-[-    }-],        # aligned 68->68 edited
-[-    "-]POP_JUMP_IF_TRUE[-": {-]        # aligned 69->69 edited
-[-        "-]counter[-": -]1,        # aligned 70->70 edited
-[-    }-],        # aligned 71->71 edited
-    "POP_JUMP_IF_FALSE": {
-[-        "-]counter[-": -]1,        # aligned 73->73 edited
-[-    }-],        # aligned 74->74 edited
-    "POP_JUMP_IF_NONE": {
-[-        "-]counter[-": -]1,        # aligned 76->76 edited
-[-    }-],        # aligned 77->77 edited
-    "POP_JUMP_IF_NOT_NONE": {
-        "counter": 1,
-    },
-}
+_cache_format ={+ frozendict(+}        # aligned 8->8 edited
+{+    +}LOAD_GLOBAL{+=frozendict(+}        # aligned 9->9 edited
+{+        +}counter{+=+}1,        # aligned 10->10 edited
+{+        +}index{+=+}1,        # aligned 11->11 edited
+{+        +}module_keys_version{+=+}1,        # aligned 12->12 edited
+{+        +}builtin_keys_version{+=+}1,        # aligned 13->13 edited
+{+    )+},        # aligned 14->14 edited
+{+    +}BINARY_OP{+=frozendict(+}        # aligned 15->15 edited
+{+        +}counter{+=+}1,        # aligned 16->16 edited
+{+        +}descr{+=+}4,        # aligned 17->17 edited
+{+    )+},        # aligned 18->18 edited
+{+    +}UNPACK_SEQUENCE{+=frozendict(+}        # aligned 19->19 edited
+{+        +}counter{+=+}1,        # aligned 20->20 edited
+{+    )+},        # aligned 21->21 edited
+    COMPARE_OP=frozendict(
+{+        +}counter{+=+}1,        # aligned 23->23 edited
+{+    )+},        # aligned 24->24 edited
+    CONTAINS_OP=frozendict(
+{+        +}counter{+=+}1,        # aligned 26->26 edited
+{+    )+},        # aligned 27->27 edited
+    FOR_ITER=frozendict(
+{+        +}counter{+=+}1,        # aligned 29->29 edited
+{+    )+},        # aligned 30->30 edited
+    LOAD_SUPER_ATTR=frozendict(
+{+        +}counter{+=+}1,        # aligned 32->32 edited
+{+    )+},        # aligned 33->33 edited
+{+    +}LOAD_ATTR{+=frozendict(+}        # aligned 34->34 edited
+{+        +}counter{+=+}1,        # aligned 35->35 edited
+{+        +}version{+=+}2,        # aligned 36->36 edited
+{+        +}keys_version{+=+}2,        # aligned 37->37 edited
+{+        +}descr{+=+}4,        # aligned 38->38 edited
+{+    )+},        # aligned 39->39 edited
+{+    +}STORE_ATTR{+=frozendict(+}        # aligned 40->40 edited
+{+        +}counter{+=+}1,        # aligned 41->41 edited
+{+        +}version{+=+}2,        # aligned 42->42 edited
+{+        +}index{+=+}1,        # aligned 43->43 edited
+{+    )+},        # aligned 44->44 edited
+{+    +}CALL{+=frozendict(+}        # aligned 45->45 edited
+{+        +}counter{+=+}1,        # aligned 46->46 edited
+{+        +}func_version{+=+}2,        # aligned 47->47 edited
+{+    )+},        # aligned 48->48 edited
+{+    +}CALL_KW{+=frozendict(+}        # aligned 49->49 edited
+{+        +}counter{+=+}1,        # aligned 50->50 edited
+{+        +}func_version{+=+}2,        # aligned 51->51 edited
+{+    )+},        # aligned 52->52 edited
+{+    +}CALL_FUNCTION_EX{+=frozendict(+}        # aligned 53->53 edited
+{+        +}counter{+=+}1,        # aligned 54->54 edited
+{+    )+},        # aligned 55->55 edited
+    STORE_SUBSCR=frozendict(
+{+        +}counter{+=+}1,        # aligned 57->57 edited
+{+    )+},        # aligned 58->58 edited
+    SEND=frozendict(
+{+        +}counter{+=+}1,        # aligned 60->60 edited
+{+    )+},        # aligned 61->61 edited
+    JUMP_BACKWARD=frozendict(
+{+        +}counter{+=+}1,        # aligned 63->63 edited
+{+    )+},        # aligned 64->64 edited
+{+    +}TO_BOOL{+=frozendict(+}        # aligned 65->65 edited
+{+        +}counter{+=+}1,        # aligned 66->66 edited
+{+        +}version{+=+}2,        # aligned 67->67 edited
+{+    )+},        # aligned 68->68 edited
+{+    +}POP_JUMP_IF_TRUE{+=frozendict(+}        # aligned 69->69 edited
+{+        +}counter{+=+}1,        # aligned 70->70 edited
+{+    )+},        # aligned 71->71 edited
+    POP_JUMP_IF_FALSE=frozendict(
+{+        +}counter{+=+}1,        # aligned 73->73 edited
+{+    )+},        # aligned 74->74 edited
+    POP_JUMP_IF_NONE=frozendict(
+{+        +}counter{+=+}1,        # aligned 76->76 edited
+{+    )+},        # aligned 77->77 edited
+    POP_JUMP_IF_NOT_NONE=frozendict(
+        counter=1,
+    ),
+)
 
-_inline_cache_entries =[- -]{        # aligned 83->83 edited
+_inline_cache_entries ={+ frozendict(+}{        # aligned 83->83 edited
     name : sum(value.values()) for (name, value) in _cache_format.items()
-}        # aligned 85->85 edited
+}{+)+}        # aligned 85->85 edited

[011] cpython | b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py

need=container-rewrite align remote word
old: data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py
new: data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
note: tuple/list style parameterization rewritten to dict-like records

histogram

git diff --no-index --histogram --color=always --unified=8 data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
index 3c856a8..5449f04 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
@@ -312,38 +312,36 @@ class OffSysPathTests(fixtures.DistInfoPkgOffPath, unittest.TestCase):
 
 class InvalidateCache(unittest.TestCase):
     def test_invalidate_cache(self):
         # No externally observable behavior, but ensures test coverage...
         importlib.invalidate_caches()
 
 
 class PreparedTests(unittest.TestCase):
-    def test_normalize(self):
-        tests = [
-            # Simple
-            ("sample", "sample"),
-            # Mixed case
-            ("Sample", "sample"),
-            ("SAMPLE", "sample"),
-            ("SaMpLe", "sample"),
-            # Separator conversions
-            ("sample-pkg", "sample_pkg"),
-            ("sample.pkg", "sample_pkg"),
-            ("sample_pkg", "sample_pkg"),
-            # Multiple separators
-            ("sample---pkg", "sample_pkg"),
-            ("sample___pkg", "sample_pkg"),
-            ("sample...pkg", "sample_pkg"),
-            # Mixed separators
-            ("sample-._pkg", "sample_pkg"),
-            ("sample_.-pkg", "sample_pkg"),
-            # Complex
-            ("Sample__Pkg-name.foo", "sample_pkg_name_foo"),
-            ("Sample__Pkg.name__foo", "sample_pkg_name_foo"),
-            # Uppercase with separators
-            ("SAMPLE-PKG", "sample_pkg"),
-            ("Sample.Pkg", "sample_pkg"),
-            ("SAMPLE_PKG", "sample_pkg"),
-        ]
-        for name, expected in tests:
-            with self.subTest(name=name):
-                self.assertEqual(Prepared.normalize(name), expected)
+    @fixtures.parameterize(
+        # Simple
+        dict(input='sample', expected='sample'),
+        # Mixed case
+        dict(input='Sample', expected='sample'),
+        dict(input='SAMPLE', expected='sample'),
+        dict(input='SaMpLe', expected='sample'),
+        # Separator conversions
+        dict(input='sample-pkg', expected='sample_pkg'),
+        dict(input='sample.pkg', expected='sample_pkg'),
+        dict(input='sample_pkg', expected='sample_pkg'),
+        # Multiple separators
+        dict(input='sample---pkg', expected='sample_pkg'),
+        dict(input='sample___pkg', expected='sample_pkg'),
+        dict(input='sample...pkg', expected='sample_pkg'),
+        # Mixed separators
+        dict(input='sample-._pkg', expected='sample_pkg'),
+        dict(input='sample_.-pkg', expected='sample_pkg'),
+        # Complex
+        dict(input='Sample__Pkg-name.foo', expected='sample_pkg_name_foo'),
+        dict(input='Sample__Pkg.name__foo', expected='sample_pkg_name_foo'),
+        # Uppercase with separators
+        dict(input='SAMPLE-PKG', expected='sample_pkg'),
+        dict(input='Sample.Pkg', expected='sample_pkg'),
+        dict(input='SAMPLE_PKG', expected='sample_pkg'),
+    )
+    def test_normalize(self, input, expected):
+        self.assertEqual(Prepared.normalize(input), expected)

word-diff

git diff --no-index --histogram --color=always --unified=8 --word-diff=plain data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
index 3c856a8..5449f04 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
@@ -312,38 +312,36 @@ class OffSysPathTests(fixtures.DistInfoPkgOffPath, unittest.TestCase):

class InvalidateCache(unittest.TestCase):
    def test_invalidate_cache(self):
        # No externally observable behavior, but ensures test coverage...
        importlib.invalidate_caches()


class PreparedTests(unittest.TestCase):
    [-def test_normalize(self):-]
[-        tests = [-]{+@fixtures.parameterize(+}
        # Simple
        [-("sample", "sample"),-]{+dict(input='sample', expected='sample'),+}
        # Mixed case
        [-("Sample", "sample"),-]
[-            ("SAMPLE", "sample"),-]
[-            ("SaMpLe", "sample"),-]{+dict(input='Sample', expected='sample'),+}
{+        dict(input='SAMPLE', expected='sample'),+}
{+        dict(input='SaMpLe', expected='sample'),+}
        # Separator conversions
        [-("sample-pkg", "sample_pkg"),-]
[-            ("sample.pkg", "sample_pkg"),-]
[-            ("sample_pkg", "sample_pkg"),-]{+dict(input='sample-pkg', expected='sample_pkg'),+}
{+        dict(input='sample.pkg', expected='sample_pkg'),+}
{+        dict(input='sample_pkg', expected='sample_pkg'),+}
        # Multiple separators
        [-("sample---pkg", "sample_pkg"),-]
[-            ("sample___pkg", "sample_pkg"),-]
[-            ("sample...pkg", "sample_pkg"),-]{+dict(input='sample---pkg', expected='sample_pkg'),+}
{+        dict(input='sample___pkg', expected='sample_pkg'),+}
{+        dict(input='sample...pkg', expected='sample_pkg'),+}
        # Mixed separators
        [-("sample-._pkg", "sample_pkg"),-]
[-            ("sample_.-pkg", "sample_pkg"),-]{+dict(input='sample-._pkg', expected='sample_pkg'),+}
{+        dict(input='sample_.-pkg', expected='sample_pkg'),+}
        # Complex
        [-("Sample__Pkg-name.foo", "sample_pkg_name_foo"),-]
[-            ("Sample__Pkg.name__foo", "sample_pkg_name_foo"),-]{+dict(input='Sample__Pkg-name.foo', expected='sample_pkg_name_foo'),+}
{+        dict(input='Sample__Pkg.name__foo', expected='sample_pkg_name_foo'),+}
        # Uppercase with separators
        [-("SAMPLE-PKG", "sample_pkg"),-]
[-            ("Sample.Pkg", "sample_pkg"),-]
[-            ("SAMPLE_PKG", "sample_pkg"),-]
[-        ]-]
[-        for name, expected in tests:-]
[-            with self.subTest(name=name):-]
[-                self.assertEqual(Prepared.normalize(name),-]{+dict(input='SAMPLE-PKG', expected='sample_pkg'),+}
{+        dict(input='Sample.Pkg', expected='sample_pkg'),+}
{+        dict(input='SAMPLE_PKG', expected='sample_pkg'),+}
{+    )+}
{+    def test_normalize(self, input, expected):+}
{+        self.assertEqual(Prepared.normalize(input),+} expected)

color-moved

git diff --no-index --histogram --color=always --unified=8 --color-moved=blocks data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
index 3c856a8..5449f04 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
@@ -312,38 +312,36 @@ class OffSysPathTests(fixtures.DistInfoPkgOffPath, unittest.TestCase):
 
 class InvalidateCache(unittest.TestCase):
     def test_invalidate_cache(self):
         # No externally observable behavior, but ensures test coverage...
         importlib.invalidate_caches()
 
 
 class PreparedTests(unittest.TestCase):
-    def test_normalize(self):
-        tests = [
-            # Simple
-            ("sample", "sample"),
-            # Mixed case
-            ("Sample", "sample"),
-            ("SAMPLE", "sample"),
-            ("SaMpLe", "sample"),
-            # Separator conversions
-            ("sample-pkg", "sample_pkg"),
-            ("sample.pkg", "sample_pkg"),
-            ("sample_pkg", "sample_pkg"),
-            # Multiple separators
-            ("sample---pkg", "sample_pkg"),
-            ("sample___pkg", "sample_pkg"),
-            ("sample...pkg", "sample_pkg"),
-            # Mixed separators
-            ("sample-._pkg", "sample_pkg"),
-            ("sample_.-pkg", "sample_pkg"),
-            # Complex
-            ("Sample__Pkg-name.foo", "sample_pkg_name_foo"),
-            ("Sample__Pkg.name__foo", "sample_pkg_name_foo"),
-            # Uppercase with separators
-            ("SAMPLE-PKG", "sample_pkg"),
-            ("Sample.Pkg", "sample_pkg"),
-            ("SAMPLE_PKG", "sample_pkg"),
-        ]
-        for name, expected in tests:
-            with self.subTest(name=name):
-                self.assertEqual(Prepared.normalize(name), expected)
+    @fixtures.parameterize(
+        # Simple
+        dict(input='sample', expected='sample'),
+        # Mixed case
+        dict(input='Sample', expected='sample'),
+        dict(input='SAMPLE', expected='sample'),
+        dict(input='SaMpLe', expected='sample'),
+        # Separator conversions
+        dict(input='sample-pkg', expected='sample_pkg'),
+        dict(input='sample.pkg', expected='sample_pkg'),
+        dict(input='sample_pkg', expected='sample_pkg'),
+        # Multiple separators
+        dict(input='sample---pkg', expected='sample_pkg'),
+        dict(input='sample___pkg', expected='sample_pkg'),
+        dict(input='sample...pkg', expected='sample_pkg'),
+        # Mixed separators
+        dict(input='sample-._pkg', expected='sample_pkg'),
+        dict(input='sample_.-pkg', expected='sample_pkg'),
+        # Complex
+        dict(input='Sample__Pkg-name.foo', expected='sample_pkg_name_foo'),
+        dict(input='Sample__Pkg.name__foo', expected='sample_pkg_name_foo'),
+        # Uppercase with separators
+        dict(input='SAMPLE-PKG', expected='sample_pkg'),
+        dict(input='Sample.Pkg', expected='sample_pkg'),
+        dict(input='SAMPLE_PKG', expected='sample_pkg'),
+    )
+    def test_normalize(self, input, expected):
+        self.assertEqual(Prepared.normalize(input), expected)

word-diff-align

git diff --no-index --histogram --color=always --unified=8 --word-diff-align data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
index 3c856a8..5449f04 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/b5e4c46be24d__Lib__test__test_importlib__metadata__test_api.py/new.py
@@ -312,38 +312,36 @@ class OffSysPathTests(fixtures.DistInfoPkgOffPath, unittest.TestCase):
 
 class InvalidateCache(unittest.TestCase):
     def test_invalidate_cache(self):
         # No externally observable behavior, but ensures test coverage...
         importlib.invalidate_caches()
 
 
 class PreparedTests(unittest.TestCase):
-    def test_normalize(self):
-        tests = [
-[-            -]# Simple        # aligned 10->9 edited
-[-            -]([-"-]sample[-"-],[- "-]sample[-"-]),        # aligned 11->10 edited
-[-            -]# Mixed case        # aligned 12->11 edited
-[-            -]([-"-]Sample[-"-],[- "-]sample[-"-]),        # aligned 13->12 edited
-[-            -]([-"-]SAMPLE[-"-],[- "-]sample[-"-]),        # aligned 14->13 edited
-[-            -]([-"-]SaMpLe[-"-],[- "-]sample[-"-]),        # aligned 15->14 edited
-[-            -]# Separator conversions        # aligned 16->15 edited
-[-            -]([-"-]sample-pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 17->16 edited
-[-            -]([-"-]sample.pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 18->17 edited
-[-            -]([-"-]sample_pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 19->18 edited
-[-            -]# Multiple separators        # aligned 20->19 edited
-[-            -]([-"-]sample---pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 21->20 edited
-[-            -]([-"-]sample___pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 22->21 edited
-[-            -]([-"-]sample...pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 23->22 edited
-[-            -]# Mixed separators        # aligned 24->23 edited
-[-            -]([-"-]sample-._pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 25->24 edited
-[-            -]([-"-]sample_.-pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 26->25 edited
-[-            -]# Complex        # aligned 27->26 edited
-[-            -]([-"-]Sample__Pkg-name.foo[-"-],[- "-]sample_pkg_name_foo[-"-]),        # aligned 28->27 edited
-[-            -]([-"-]Sample__Pkg.name__foo[-"-],[- "-]sample_pkg_name_foo[-"-]),        # aligned 29->28 edited
-[-            -]# Uppercase with separators        # aligned 30->29 edited
-[-            -]([-"-]SAMPLE-PKG[-"-],[- "-]sample_pkg[-"-]),        # aligned 31->30 edited
-[-            -]([-"-]Sample.Pkg[-"-],[- "-]sample_pkg[-"-]),        # aligned 32->31 edited
-[-            -]([-"-]SAMPLE_PKG[-"-],[- "-]sample_pkg[-"-]),        # aligned 33->32 edited
-        ]
-[-        for name-],[- -]expected[- in tests-]:        # aligned 35->34 edited
-            with self.subTest(name=name):
-[-                -]self.assertEqual(Prepared.normalize([-name-]), expected)        # aligned 37->35 edited
+    @fixtures.parameterize(
+{+        +}# Simple        # aligned 10->9 edited
+{+        dict+}({+input='+}sample{+'+},{+ expected='+}sample{+'+}),        # aligned 11->10 edited
+{+        +}# Mixed case        # aligned 12->11 edited
+{+        dict+}({+input='+}Sample{+'+},{+ expected='+}sample{+'+}),        # aligned 13->12 edited
+{+        dict+}({+input='+}SAMPLE{+'+},{+ expected='+}sample{+'+}),        # aligned 14->13 edited
+{+        dict+}({+input='+}SaMpLe{+'+},{+ expected='+}sample{+'+}),        # aligned 15->14 edited
+{+        +}# Separator conversions        # aligned 16->15 edited
+{+        dict+}({+input='+}sample-pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 17->16 edited
+{+        dict+}({+input='+}sample.pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 18->17 edited
+{+        dict+}({+input='+}sample_pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 19->18 edited
+{+        +}# Multiple separators        # aligned 20->19 edited
+{+        dict+}({+input='+}sample---pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 21->20 edited
+{+        dict+}({+input='+}sample___pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 22->21 edited
+{+        dict+}({+input='+}sample...pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 23->22 edited
+{+        +}# Mixed separators        # aligned 24->23 edited
+{+        dict+}({+input='+}sample-._pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 25->24 edited
+{+        dict+}({+input='+}sample_.-pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 26->25 edited
+{+        +}# Complex        # aligned 27->26 edited
+{+        dict+}({+input='+}Sample__Pkg-name.foo{+'+},{+ expected='+}sample_pkg_name_foo{+'+}),        # aligned 28->27 edited
+{+        dict+}({+input='+}Sample__Pkg.name__foo{+'+},{+ expected='+}sample_pkg_name_foo{+'+}),        # aligned 29->28 edited
+{+        +}# Uppercase with separators        # aligned 30->29 edited
+{+        dict+}({+input='+}SAMPLE-PKG{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 31->30 edited
+{+        dict+}({+input='+}Sample.Pkg{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 32->31 edited
+{+        dict+}({+input='+}SAMPLE_PKG{+'+},{+ expected='+}sample_pkg{+'+}),        # aligned 33->32 edited
+    )
+{+    def test_normalize(self+},{+ input, +}expected{+)+}:        # aligned 35->34 edited
+{+        +}self.assertEqual(Prepared.normalize({+input+}), expected)        # aligned 37->35 edited

[012] cpython | 8e43f3d1177f__Lib__dataclasses.py

need=container-rewrite align word
old: data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py
new: data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
note: dataclasses documentation/text line split with frozendicts

histogram

git diff --no-index --histogram --color=always --unified=8 data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
index 0c7e01c..9d5bed6 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
@@ -1491,17 +1491,18 @@ def asdict(obj, *, dict_factory=dict):
           y: int
 
       c = C(1, 2)
       assert asdict(c) == {'x': 1, 'y': 2}
 
     If given, 'dict_factory' will be used instead of built-in dict.
     The function applies recursively to field values that are
     dataclass instances. This will also look into built-in containers:
-    tuples, lists, and dicts. Other objects are copied with 'copy.deepcopy()'.
+    tuples, lists, dicts, and frozendicts. Other objects are copied
+    with 'copy.deepcopy()'.
     """
     if not _is_dataclass_instance(obj):
         raise TypeError("asdict() should be called on dataclass instances")
     return _asdict_inner(obj, dict_factory)
 
 
 def _asdict_inner(obj, dict_factory):
     obj_type = type(obj)
@@ -1547,17 +1548,17 @@ def _asdict_inner(obj, dict_factory):
             #   namedtuples to lists.  Admittedly we're losing some
             #   information here when we produce a json list instead of a
             #   dict.  Note that if we returned dicts here instead of
             #   namedtuples, we could no longer call asdict() on a data
             #   structure where a namedtuple was used as a dict key.
             return obj_type(*[_asdict_inner(v, dict_factory) for v in obj])
         else:
             return obj_type(_asdict_inner(v, dict_factory) for v in obj)
-    elif issubclass(obj_type, dict):
+    elif issubclass(obj_type, (dict, frozendict)):
         if hasattr(obj_type, 'default_factory'):
             # obj is a defaultdict, which has a different constructor from
             # dict as it requires the default_factory as its first arg.
             result = obj_type(obj.default_factory)
             for k, v in obj.items():
                 result[_asdict_inner(k, dict_factory)] = _asdict_inner(v, dict_factory)
             return result
         return obj_type((_asdict_inner(k, dict_factory),
@@ -1582,17 +1583,18 @@ def astuple(obj, *, tuple_factory=tuple):
           y: int
 
       c = C(1, 2)
       assert astuple(c) == (1, 2)
 
     If given, 'tuple_factory' will be used instead of built-in tuple.
     The function applies recursively to field values that are
     dataclass instances. This will also look into built-in containers:
-    tuples, lists, and dicts. Other objects are copied with 'copy.deepcopy()'.
+    tuples, lists, dicts, and frozendicts. Other objects are copied
+    with 'copy.deepcopy()'.
     """
 
     if not _is_dataclass_instance(obj):
         raise TypeError("astuple() should be called on dataclass instances")
     return _astuple_inner(obj, tuple_factory)
 
 
 def _astuple_inner(obj, tuple_factory):
@@ -1611,17 +1613,17 @@ def _astuple_inner(obj, tuple_factory):
         # differently because a namedtuple's __init__ needs to be
         # called differently (see bpo-34363).
         return type(obj)(*[_astuple_inner(v, tuple_factory) for v in obj])
     elif isinstance(obj, (list, tuple)):
         # Assume we can create an object of this type by passing in a
         # generator (which is not true for namedtuples, handled
         # above).
         return type(obj)(_astuple_inner(v, tuple_factory) for v in obj)
-    elif isinstance(obj, dict):
+    elif isinstance(obj, (dict, frozendict)):
         obj_type = type(obj)
         if hasattr(obj_type, 'default_factory'):
             # obj is a defaultdict, which has a different constructor from
             # dict as it requires the default_factory as its first arg.
             result = obj_type(getattr(obj, 'default_factory'))
             for k, v in obj.items():
                 result[_astuple_inner(k, tuple_factory)] = _astuple_inner(v, tuple_factory)
             return result

word-diff

git diff --no-index --histogram --color=always --unified=8 --word-diff=plain data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
index 0c7e01c..9d5bed6 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
@@ -1491,17 +1491,18 @@ def asdict(obj, *, dict_factory=dict):
          y: int

      c = C(1, 2)
      assert asdict(c) == {'x': 1, 'y': 2}

    If given, 'dict_factory' will be used instead of built-in dict.
    The function applies recursively to field values that are
    dataclass instances. This will also look into built-in containers:
    tuples, lists, {+dicts,+} and [-dicts.-]{+frozendicts.+} Other objects are copied
    with 'copy.deepcopy()'.
    """
    if not _is_dataclass_instance(obj):
        raise TypeError("asdict() should be called on dataclass instances")
    return _asdict_inner(obj, dict_factory)


def _asdict_inner(obj, dict_factory):
    obj_type = type(obj)
@@ -1547,17 +1548,17 @@ def _asdict_inner(obj, dict_factory):
            #   namedtuples to lists.  Admittedly we're losing some
            #   information here when we produce a json list instead of a
            #   dict.  Note that if we returned dicts here instead of
            #   namedtuples, we could no longer call asdict() on a data
            #   structure where a namedtuple was used as a dict key.
            return obj_type(*[_asdict_inner(v, dict_factory) for v in obj])
        else:
            return obj_type(_asdict_inner(v, dict_factory) for v in obj)
    elif issubclass(obj_type, [-dict):-]{+(dict, frozendict)):+}
        if hasattr(obj_type, 'default_factory'):
            # obj is a defaultdict, which has a different constructor from
            # dict as it requires the default_factory as its first arg.
            result = obj_type(obj.default_factory)
            for k, v in obj.items():
                result[_asdict_inner(k, dict_factory)] = _asdict_inner(v, dict_factory)
            return result
        return obj_type((_asdict_inner(k, dict_factory),
@@ -1582,17 +1583,18 @@ def astuple(obj, *, tuple_factory=tuple):
          y: int

      c = C(1, 2)
      assert astuple(c) == (1, 2)

    If given, 'tuple_factory' will be used instead of built-in tuple.
    The function applies recursively to field values that are
    dataclass instances. This will also look into built-in containers:
    tuples, lists, {+dicts,+} and [-dicts.-]{+frozendicts.+} Other objects are copied
    with 'copy.deepcopy()'.
    """

    if not _is_dataclass_instance(obj):
        raise TypeError("astuple() should be called on dataclass instances")
    return _astuple_inner(obj, tuple_factory)


def _astuple_inner(obj, tuple_factory):
@@ -1611,17 +1613,17 @@ def _astuple_inner(obj, tuple_factory):
        # differently because a namedtuple's __init__ needs to be
        # called differently (see bpo-34363).
        return type(obj)(*[_astuple_inner(v, tuple_factory) for v in obj])
    elif isinstance(obj, (list, tuple)):
        # Assume we can create an object of this type by passing in a
        # generator (which is not true for namedtuples, handled
        # above).
        return type(obj)(_astuple_inner(v, tuple_factory) for v in obj)
    elif isinstance(obj, [-dict):-]{+(dict, frozendict)):+}
        obj_type = type(obj)
        if hasattr(obj_type, 'default_factory'):
            # obj is a defaultdict, which has a different constructor from
            # dict as it requires the default_factory as its first arg.
            result = obj_type(getattr(obj, 'default_factory'))
            for k, v in obj.items():
                result[_astuple_inner(k, tuple_factory)] = _astuple_inner(v, tuple_factory)
            return result

color-moved

git diff --no-index --histogram --color=always --unified=8 --color-moved=blocks data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
index 0c7e01c..9d5bed6 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
@@ -1491,17 +1491,18 @@ def asdict(obj, *, dict_factory=dict):
           y: int
 
       c = C(1, 2)
       assert asdict(c) == {'x': 1, 'y': 2}
 
     If given, 'dict_factory' will be used instead of built-in dict.
     The function applies recursively to field values that are
     dataclass instances. This will also look into built-in containers:
-    tuples, lists, and dicts. Other objects are copied with 'copy.deepcopy()'.
+    tuples, lists, dicts, and frozendicts. Other objects are copied
+    with 'copy.deepcopy()'.
     """
     if not _is_dataclass_instance(obj):
         raise TypeError("asdict() should be called on dataclass instances")
     return _asdict_inner(obj, dict_factory)
 
 
 def _asdict_inner(obj, dict_factory):
     obj_type = type(obj)
@@ -1547,17 +1548,17 @@ def _asdict_inner(obj, dict_factory):
             #   namedtuples to lists.  Admittedly we're losing some
             #   information here when we produce a json list instead of a
             #   dict.  Note that if we returned dicts here instead of
             #   namedtuples, we could no longer call asdict() on a data
             #   structure where a namedtuple was used as a dict key.
             return obj_type(*[_asdict_inner(v, dict_factory) for v in obj])
         else:
             return obj_type(_asdict_inner(v, dict_factory) for v in obj)
-    elif issubclass(obj_type, dict):
+    elif issubclass(obj_type, (dict, frozendict)):
         if hasattr(obj_type, 'default_factory'):
             # obj is a defaultdict, which has a different constructor from
             # dict as it requires the default_factory as its first arg.
             result = obj_type(obj.default_factory)
             for k, v in obj.items():
                 result[_asdict_inner(k, dict_factory)] = _asdict_inner(v, dict_factory)
             return result
         return obj_type((_asdict_inner(k, dict_factory),
@@ -1582,17 +1583,18 @@ def astuple(obj, *, tuple_factory=tuple):
           y: int
 
       c = C(1, 2)
       assert astuple(c) == (1, 2)
 
     If given, 'tuple_factory' will be used instead of built-in tuple.
     The function applies recursively to field values that are
     dataclass instances. This will also look into built-in containers:
-    tuples, lists, and dicts. Other objects are copied with 'copy.deepcopy()'.
+    tuples, lists, dicts, and frozendicts. Other objects are copied
+    with 'copy.deepcopy()'.
     """
 
     if not _is_dataclass_instance(obj):
         raise TypeError("astuple() should be called on dataclass instances")
     return _astuple_inner(obj, tuple_factory)
 
 
 def _astuple_inner(obj, tuple_factory):
@@ -1611,17 +1613,17 @@ def _astuple_inner(obj, tuple_factory):
         # differently because a namedtuple's __init__ needs to be
         # called differently (see bpo-34363).
         return type(obj)(*[_astuple_inner(v, tuple_factory) for v in obj])
     elif isinstance(obj, (list, tuple)):
         # Assume we can create an object of this type by passing in a
         # generator (which is not true for namedtuples, handled
         # above).
         return type(obj)(_astuple_inner(v, tuple_factory) for v in obj)
-    elif isinstance(obj, dict):
+    elif isinstance(obj, (dict, frozendict)):
         obj_type = type(obj)
         if hasattr(obj_type, 'default_factory'):
             # obj is a defaultdict, which has a different constructor from
             # dict as it requires the default_factory as its first arg.
             result = obj_type(getattr(obj, 'default_factory'))
             for k, v in obj.items():
                 result[_astuple_inner(k, tuple_factory)] = _astuple_inner(v, tuple_factory)
             return result

word-diff-align

git diff --no-index --histogram --color=always --unified=8 --word-diff-align data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
diff --git a/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py b/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
index 0c7e01c..9d5bed6 100644
--- a/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/old.py
+++ b/data/experiments/server_expand_1/git_pairs/cpython/8e43f3d1177f__Lib__dataclasses.py/new.py
@@ -1491,17 +1491,18 @@ def asdict(obj, *, dict_factory=dict):
           y: int
 
       c = C(1, 2)
       assert asdict(c) == {'x': 1, 'y': 2}
 
     If given, 'dict_factory' will be used instead of built-in dict.
     The function applies recursively to field values that are
     dataclass instances. This will also look into built-in containers:
-    tuples, lists,[- and -]dicts. Other objects are copied[- with 'copy.deepcopy()'.-]        # aligned 8->8 edited
+    tuples, lists,{+ +}dicts{+, and frozendicts+}. Other objects are copied        # aligned 8->8 edited
+    with 'copy.deepcopy()'.
     """
     if not _is_dataclass_instance(obj):
         raise TypeError("asdict() should be called on dataclass instances")
     return _asdict_inner(obj, dict_factory)
 
 
 def _asdict_inner(obj, dict_factory):
     obj_type = type(obj)
@@ -1547,17 +1548,17 @@ def _asdict_inner(obj, dict_factory):
             #   namedtuples to lists.  Admittedly we're losing some
             #   information here when we produce a json list instead of a
             #   dict.  Note that if we returned dicts here instead of
             #   namedtuples, we could no longer call asdict() on a data
             #   structure where a namedtuple was used as a dict key.
             return obj_type(*[_asdict_inner(v, dict_factory) for v in obj])
         else:
             return obj_type(_asdict_inner(v, dict_factory) for v in obj)
-    elif issubclass(obj_type,[- -]dict):        # aligned 8->8 edited
+    elif issubclass(obj_type,{+ (+}dict{+, frozendict+}){+)+}:        # aligned 8->8 edited
         if hasattr(obj_type, 'default_factory'):
             # obj is a defaultdict, which has a different constructor from
             # dict as it requires the default_factory as its first arg.
             result = obj_type(obj.default_factory)
             for k, v in obj.items():
                 result[_asdict_inner(k, dict_factory)] = _asdict_inner(v, dict_factory)
             return result
         return obj_type((_asdict_inner(k, dict_factory),
@@ -1582,17 +1583,18 @@ def astuple(obj, *, tuple_factory=tuple):
           y: int
 
       c = C(1, 2)
       assert astuple(c) == (1, 2)
 
     If given, 'tuple_factory' will be used instead of built-in tuple.
     The function applies recursively to field values that are
     dataclass instances. This will also look into built-in containers:
-    tuples, lists,[- and -]dicts. Other objects are copied[- with 'copy.deepcopy()'.-]        # aligned 8->8 edited
+    tuples, lists,{+ +}dicts{+, and frozendicts+}. Other objects are copied        # aligned 8->8 edited
+    with 'copy.deepcopy()'.
     """
 
     if not _is_dataclass_instance(obj):
         raise TypeError("astuple() should be called on dataclass instances")
     return _astuple_inner(obj, tuple_factory)
 
 
 def _astuple_inner(obj, tuple_factory):
@@ -1611,17 +1613,17 @@ def _astuple_inner(obj, tuple_factory):
         # differently because a namedtuple's __init__ needs to be
         # called differently (see bpo-34363).
         return type(obj)(*[_astuple_inner(v, tuple_factory) for v in obj])
     elif isinstance(obj, (list, tuple)):
         # Assume we can create an object of this type by passing in a
         # generator (which is not true for namedtuples, handled
         # above).
         return type(obj)(_astuple_inner(v, tuple_factory) for v in obj)
-    elif isinstance(obj,[- -]dict):        # aligned 8->8 edited
+    elif isinstance(obj,{+ (+}dict{+, frozendict+}){+)+}:        # aligned 8->8 edited
         obj_type = type(obj)
         if hasattr(obj_type, 'default_factory'):
             # obj is a defaultdict, which has a different constructor from
             # dict as it requires the default_factory as its first arg.
             result = obj_type(getattr(obj, 'default_factory'))
             for k, v in obj.items():
                 result[_astuple_inner(k, tuple_factory)] = _astuple_inner(v, tuple_factory)
             return result

[013] git | 18952a1ef1a1__t__t1901-repo-structure.sh

need=table-spacing align remote word
old: data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh
new: data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
note: table width changes in shell test expected output

histogram

git diff --no-index --histogram --color=always --unified=8 data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
index 918af72..d003d64 100644
--- a/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
@@ -22,51 +22,52 @@ object_type_disk_usage() {
 }
 
 test_expect_success 'empty repository' '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
 	(
 		cd repo &&
 		cat >expect <<-\EOF &&
-		| Repository structure     | Value  |
-		| ------------------------ | ------ |
-		| * References             |        |
-		|   * Count                |    0   |
-		|     * Branches           |    0   |
-		|     * Tags               |    0   |
-		|     * Remotes            |    0   |
-		|     * Others             |    0   |
-		|                          |        |
-		| * Reachable objects      |        |
-		|   * Count                |    0   |
-		|     * Commits            |    0   |
-		|     * Trees              |    0   |
-		|     * Blobs              |    0   |
-		|     * Tags               |    0   |
-		|   * Inflated size        |    0 B |
-		|     * Commits            |    0 B |
-		|     * Trees              |    0 B |
-		|     * Blobs              |    0 B |
-		|     * Tags               |    0 B |
-		|   * Disk size            |    0 B |
-		|     * Commits            |    0 B |
-		|     * Trees              |    0 B |
-		|     * Blobs              |    0 B |
-		|     * Tags               |    0 B |
-		|                          |        |
-		| * Largest objects        |        |
-		|   * Commits              |        |
-		|     * Maximum size       |    0 B |
-		|   * Trees                |        |
-		|     * Maximum size       |    0 B |
-		|   * Blobs                |        |
-		|     * Maximum size       |    0 B |
-		|   * Tags                 |        |
-		|     * Maximum size       |    0 B |
+		| Repository structure      | Value  |
+		| ------------------------- | ------ |
+		| * References              |        |
+		|   * Count                 |    0   |
+		|     * Branches            |    0   |
+		|     * Tags                |    0   |
+		|     * Remotes             |    0   |
+		|     * Others              |    0   |
+		|                           |        |
+		| * Reachable objects       |        |
+		|   * Count                 |    0   |
+		|     * Commits             |    0   |
+		|     * Trees               |    0   |
+		|     * Blobs               |    0   |
+		|     * Tags                |    0   |
+		|   * Inflated size         |    0 B |
+		|     * Commits             |    0 B |
+		|     * Trees               |    0 B |
+		|     * Blobs               |    0 B |
+		|     * Tags                |    0 B |
+		|   * Disk size             |    0 B |
+		|     * Commits             |    0 B |
+		|     * Trees               |    0 B |
+		|     * Blobs               |    0 B |
+		|     * Tags                |    0 B |
+		|                           |        |
+		| * Largest objects         |        |
+		|   * Commits               |        |
+		|     * Maximum size        |    0 B |
+		|     * Maximum parents     |    0   |
+		|   * Trees                 |        |
+		|     * Maximum size        |    0 B |
+		|   * Blobs                 |        |
+		|     * Maximum size        |    0 B |
+		|   * Tags                  |        |
+		|     * Maximum size        |    0 B |
 		EOF
 
 		git repo structure >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err
 	)
 '
@@ -84,56 +85,58 @@ test_expect_success SHA1 'repository with references and objects' '
 
 		# Also creates a commit, tree, and blob.
 		git notes add -m foo &&
 
 		# The tags disk size is handled specially due to the
 		# git-rev-list(1) --disk-usage=human option printing the full
 		# "byte/bytes" unit string instead of just "B".
 		cat >expect <<-EOF &&
-		| Repository structure     | Value      |
-		| ------------------------ | ---------- |
-		| * References             |            |
-		|   * Count                |      4     |
-		|     * Branches           |      1     |
-		|     * Tags               |      1     |
-		|     * Remotes            |      1     |
-		|     * Others             |      1     |
-		|                          |            |
-		| * Reachable objects      |            |
-		|   * Count                |   3.02 k   |
-		|     * Commits            |   1.01 k   |
-		|     * Trees              |   1.01 k   |
-		|     * Blobs              |   1.01 k   |
-		|     * Tags               |      1     |
-		|   * Inflated size        |  16.03 MiB |
-		|     * Commits            | 217.92 KiB |
-		|     * Trees              |  15.81 MiB |
-		|     * Blobs              |  11.68 KiB |
-		|     * Tags               |    132 B   |
-		|   * Disk size            | $(object_type_disk_usage all true) |
-		|     * Commits            | $(object_type_disk_usage commit true) |
-		|     * Trees              | $(object_type_disk_usage tree true) |
-		|     * Blobs              |  $(object_type_disk_usage blob true) |
-		|     * Tags               |    $(object_type_disk_usage tag) B   |
-		|                          |            |
-		| * Largest objects        |            |
-		|   * Commits              |            |
-		|     * Maximum size   [1] |    223 B   |
-		|   * Trees                |            |
-		|     * Maximum size   [2] |  32.29 KiB |
-		|   * Blobs                |            |
-		|     * Maximum size   [3] |     13 B   |
-		|   * Tags                 |            |
-		|     * Maximum size   [4] |    132 B   |
+		| Repository structure      | Value      |
+		| ------------------------- | ---------- |
+		| * References              |            |
+		|   * Count                 |      4     |
+		|     * Branches            |      1     |
+		|     * Tags                |      1     |
+		|     * Remotes             |      1     |
+		|     * Others              |      1     |
+		|                           |            |
+		| * Reachable objects       |            |
+		|   * Count                 |   3.02 k   |
+		|     * Commits             |   1.01 k   |
+		|     * Trees               |   1.01 k   |
+		|     * Blobs               |   1.01 k   |
+		|     * Tags                |      1     |
+		|   * Inflated size         |  16.03 MiB |
+		|     * Commits             | 217.92 KiB |
+		|     * Trees               |  15.81 MiB |
+		|     * Blobs               |  11.68 KiB |
+		|     * Tags                |    132 B   |
+		|   * Disk size             | $(object_type_disk_usage all true) |
+		|     * Commits             | $(object_type_disk_usage commit true) |
+		|     * Trees               | $(object_type_disk_usage tree true) |
+		|     * Blobs               |  $(object_type_disk_usage blob true) |
+		|     * Tags                |    $(object_type_disk_usage tag) B   |
+		|                           |            |
+		| * Largest objects         |            |
+		|   * Commits               |            |
+		|     * Maximum size    [1] |    223 B   |
+		|     * Maximum parents [2] |      1     |
+		|   * Trees                 |            |
+		|     * Maximum size    [3] |  32.29 KiB |
+		|   * Blobs                 |            |
+		|     * Maximum size    [4] |     13 B   |
+		|   * Tags                  |            |
+		|     * Maximum size    [5] |    132 B   |
 
 		[1] 0dc91eb18580102a3a216c8bfecedeba2b9f9b9a
-		[2] 60665251ab71dbd8c18d9bf2174f4ee0d58aa06c
-		[3] 97d808e45116bf02103490294d3d46dad7a2ac62
-		[4] 4dae4f5954f5e6feb3577cfb1b181daa3fd3afd2
+		[2] 0dc91eb18580102a3a216c8bfecedeba2b9f9b9a
+		[3] 60665251ab71dbd8c18d9bf2174f4ee0d58aa06c
+		[4] 97d808e45116bf02103490294d3d46dad7a2ac62
+		[5] 4dae4f5954f5e6feb3577cfb1b181daa3fd3afd2
 		EOF
 
 		git repo structure >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err
 	)
 '
@@ -166,16 +169,18 @@ test_expect_success SHA1 'keyvalue and nul format' '
 		objects.commits.max_size=221
 		objects.commits.max_size_oid=de3508174b5c2ace6993da67cae9be9069e2df39
 		objects.trees.max_size=1335
 		objects.trees.max_size_oid=09931deea9d81ec21300d3e13c74412f32eacec5
 		objects.blobs.max_size=11
 		objects.blobs.max_size_oid=eaeeedced46482bd4281fda5a5f05ce24854151f
 		objects.tags.max_size=132
 		objects.tags.max_size_oid=1ee0f2b16ea37d895dbe9dbd76cd2ac70446176c
+		objects.commits.max_parents=1
+		objects.commits.max_parents_oid=de3508174b5c2ace6993da67cae9be9069e2df39
 		EOF
 
 		git repo structure --format=keyvalue >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err &&
 
 		# Replace key and value delimiters for nul format.

word-diff

git diff --no-index --histogram --color=always --unified=8 --word-diff=plain data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
index 918af72..d003d64 100644
--- a/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
@@ -22,51 +22,52 @@ object_type_disk_usage() {
}

test_expect_success 'empty repository' '
	test_when_finished "rm -rf repo" &&
	git init repo &&
	(
		cd repo &&
		cat >expect <<-\EOF &&
		| Repository structure      | Value  |
		| [--------------------------]{+-------------------------+} | ------ |
		| * References              |        |
		|   * Count                 |    0   |
		|     * Branches            |    0   |
		|     * Tags                |    0   |
		|     * Remotes             |    0   |
		|     * Others              |    0   |
		|                           |        |
		| * Reachable objects       |        |
		|   * Count                 |    0   |
		|     * Commits             |    0   |
		|     * Trees               |    0   |
		|     * Blobs               |    0   |
		|     * Tags                |    0   |
		|   * Inflated size         |    0 B |
		|     * Commits             |    0 B |
		|     * Trees               |    0 B |
		|     * Blobs               |    0 B |
		|     * Tags                |    0 B |
		|   * Disk size             |    0 B |
		|     * Commits             |    0 B |
		|     * Trees               |    0 B |
		|     * Blobs               |    0 B |
		|     * Tags                |    0 B |
		|                           |        |
		| * Largest objects         |        |
		|   * Commits               |        |
		|     * Maximum size        |    0 B |
		|     * {+Maximum parents     |    0   |+}
{+		|   *+} Trees                 |        |
		|     * Maximum size        |    0 B |
		|   * Blobs                 |        |
		|     * Maximum size        |    0 B |
		|   * Tags                  |        |
		|     * Maximum size        |    0 B |
		EOF

		git repo structure >out 2>err &&

		test_cmp expect out &&
		test_line_count = 0 err
	)
'
@@ -84,56 +85,58 @@ test_expect_success SHA1 'repository with references and objects' '

		# Also creates a commit, tree, and blob.
		git notes add -m foo &&

		# The tags disk size is handled specially due to the
		# git-rev-list(1) --disk-usage=human option printing the full
		# "byte/bytes" unit string instead of just "B".
		cat >expect <<-EOF &&
		| Repository structure      | Value      |
		| [--------------------------]{+-------------------------+} | ---------- |
		| * References              |            |
		|   * Count                 |      4     |
		|     * Branches            |      1     |
		|     * Tags                |      1     |
		|     * Remotes             |      1     |
		|     * Others              |      1     |
		|                           |            |
		| * Reachable objects       |            |
		|   * Count                 |   3.02 k   |
		|     * Commits             |   1.01 k   |
		|     * Trees               |   1.01 k   |
		|     * Blobs               |   1.01 k   |
		|     * Tags                |      1     |
		|   * Inflated size         |  16.03 MiB |
		|     * Commits             | 217.92 KiB |
		|     * Trees               |  15.81 MiB |
		|     * Blobs               |  11.68 KiB |
		|     * Tags                |    132 B   |
		|   * Disk size             | $(object_type_disk_usage all true) |
		|     * Commits             | $(object_type_disk_usage commit true) |
		|     * Trees               | $(object_type_disk_usage tree true) |
		|     * Blobs               |  $(object_type_disk_usage blob true) |
		|     * Tags                |    $(object_type_disk_usage tag) B   |
		|                           |            |
		| * Largest objects         |            |
		|   * Commits               |            |
		|     * Maximum size    [1] |    223 B   |
		|     * {+Maximum parents [2] |      1     |+}
{+		|   *+} Trees                 |            |
		|     * Maximum size    [-[2]-]{+[3]+} |  32.29 KiB |
		|   * Blobs                 |            |
		|     * Maximum size    [-[3]-]{+[4]+} |     13 B   |
		|   * Tags                  |            |
		|     * Maximum size    [-[4]-]{+[5]+} |    132 B   |

		[1] 0dc91eb18580102a3a216c8bfecedeba2b9f9b9a
		[2] [-60665251ab71dbd8c18d9bf2174f4ee0d58aa06c-]{+0dc91eb18580102a3a216c8bfecedeba2b9f9b9a+}
		[3] [-97d808e45116bf02103490294d3d46dad7a2ac62-]{+60665251ab71dbd8c18d9bf2174f4ee0d58aa06c+}
		[4] {+97d808e45116bf02103490294d3d46dad7a2ac62+}
{+		[5]+} 4dae4f5954f5e6feb3577cfb1b181daa3fd3afd2
		EOF

		git repo structure >out 2>err &&

		test_cmp expect out &&
		test_line_count = 0 err
	)
'
@@ -166,16 +169,18 @@ test_expect_success SHA1 'keyvalue and nul format' '
		objects.commits.max_size=221
		objects.commits.max_size_oid=de3508174b5c2ace6993da67cae9be9069e2df39
		objects.trees.max_size=1335
		objects.trees.max_size_oid=09931deea9d81ec21300d3e13c74412f32eacec5
		objects.blobs.max_size=11
		objects.blobs.max_size_oid=eaeeedced46482bd4281fda5a5f05ce24854151f
		objects.tags.max_size=132
		objects.tags.max_size_oid=1ee0f2b16ea37d895dbe9dbd76cd2ac70446176c
		{+objects.commits.max_parents=1+}
{+		objects.commits.max_parents_oid=de3508174b5c2ace6993da67cae9be9069e2df39+}
		EOF

		git repo structure --format=keyvalue >out 2>err &&

		test_cmp expect out &&
		test_line_count = 0 err &&

		# Replace key and value delimiters for nul format.

color-moved

git diff --no-index --histogram --color=always --unified=8 --color-moved=blocks data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
index 918af72..d003d64 100644
--- a/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
@@ -22,51 +22,52 @@ object_type_disk_usage() {
 }
 
 test_expect_success 'empty repository' '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
 	(
 		cd repo &&
 		cat >expect <<-\EOF &&
-		| Repository structure     | Value  |
-		| ------------------------ | ------ |
-		| * References             |        |
-		|   * Count                |    0   |
-		|     * Branches           |    0   |
-		|     * Tags               |    0   |
-		|     * Remotes            |    0   |
-		|     * Others             |    0   |
-		|                          |        |
-		| * Reachable objects      |        |
-		|   * Count                |    0   |
-		|     * Commits            |    0   |
-		|     * Trees              |    0   |
-		|     * Blobs              |    0   |
-		|     * Tags               |    0   |
-		|   * Inflated size        |    0 B |
-		|     * Commits            |    0 B |
-		|     * Trees              |    0 B |
-		|     * Blobs              |    0 B |
-		|     * Tags               |    0 B |
-		|   * Disk size            |    0 B |
-		|     * Commits            |    0 B |
-		|     * Trees              |    0 B |
-		|     * Blobs              |    0 B |
-		|     * Tags               |    0 B |
-		|                          |        |
-		| * Largest objects        |        |
-		|   * Commits              |        |
-		|     * Maximum size       |    0 B |
-		|   * Trees                |        |
-		|     * Maximum size       |    0 B |
-		|   * Blobs                |        |
-		|     * Maximum size       |    0 B |
-		|   * Tags                 |        |
-		|     * Maximum size       |    0 B |
+		| Repository structure      | Value  |
+		| ------------------------- | ------ |
+		| * References              |        |
+		|   * Count                 |    0   |
+		|     * Branches            |    0   |
+		|     * Tags                |    0   |
+		|     * Remotes             |    0   |
+		|     * Others              |    0   |
+		|                           |        |
+		| * Reachable objects       |        |
+		|   * Count                 |    0   |
+		|     * Commits             |    0   |
+		|     * Trees               |    0   |
+		|     * Blobs               |    0   |
+		|     * Tags                |    0   |
+		|   * Inflated size         |    0 B |
+		|     * Commits             |    0 B |
+		|     * Trees               |    0 B |
+		|     * Blobs               |    0 B |
+		|     * Tags                |    0 B |
+		|   * Disk size             |    0 B |
+		|     * Commits             |    0 B |
+		|     * Trees               |    0 B |
+		|     * Blobs               |    0 B |
+		|     * Tags                |    0 B |
+		|                           |        |
+		| * Largest objects         |        |
+		|   * Commits               |        |
+		|     * Maximum size        |    0 B |
+		|     * Maximum parents     |    0   |
+		|   * Trees                 |        |
+		|     * Maximum size        |    0 B |
+		|   * Blobs                 |        |
+		|     * Maximum size        |    0 B |
+		|   * Tags                  |        |
+		|     * Maximum size        |    0 B |
 		EOF
 
 		git repo structure >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err
 	)
 '
@@ -84,56 +85,58 @@ test_expect_success SHA1 'repository with references and objects' '
 
 		# Also creates a commit, tree, and blob.
 		git notes add -m foo &&
 
 		# The tags disk size is handled specially due to the
 		# git-rev-list(1) --disk-usage=human option printing the full
 		# "byte/bytes" unit string instead of just "B".
 		cat >expect <<-EOF &&
-		| Repository structure     | Value      |
-		| ------------------------ | ---------- |
-		| * References             |            |
-		|   * Count                |      4     |
-		|     * Branches           |      1     |
-		|     * Tags               |      1     |
-		|     * Remotes            |      1     |
-		|     * Others             |      1     |
-		|                          |            |
-		| * Reachable objects      |            |
-		|   * Count                |   3.02 k   |
-		|     * Commits            |   1.01 k   |
-		|     * Trees              |   1.01 k   |
-		|     * Blobs              |   1.01 k   |
-		|     * Tags               |      1     |
-		|   * Inflated size        |  16.03 MiB |
-		|     * Commits            | 217.92 KiB |
-		|     * Trees              |  15.81 MiB |
-		|     * Blobs              |  11.68 KiB |
-		|     * Tags               |    132 B   |
-		|   * Disk size            | $(object_type_disk_usage all true) |
-		|     * Commits            | $(object_type_disk_usage commit true) |
-		|     * Trees              | $(object_type_disk_usage tree true) |
-		|     * Blobs              |  $(object_type_disk_usage blob true) |
-		|     * Tags               |    $(object_type_disk_usage tag) B   |
-		|                          |            |
-		| * Largest objects        |            |
-		|   * Commits              |            |
-		|     * Maximum size   [1] |    223 B   |
-		|   * Trees                |            |
-		|     * Maximum size   [2] |  32.29 KiB |
-		|   * Blobs                |            |
-		|     * Maximum size   [3] |     13 B   |
-		|   * Tags                 |            |
-		|     * Maximum size   [4] |    132 B   |
+		| Repository structure      | Value      |
+		| ------------------------- | ---------- |
+		| * References              |            |
+		|   * Count                 |      4     |
+		|     * Branches            |      1     |
+		|     * Tags                |      1     |
+		|     * Remotes             |      1     |
+		|     * Others              |      1     |
+		|                           |            |
+		| * Reachable objects       |            |
+		|   * Count                 |   3.02 k   |
+		|     * Commits             |   1.01 k   |
+		|     * Trees               |   1.01 k   |
+		|     * Blobs               |   1.01 k   |
+		|     * Tags                |      1     |
+		|   * Inflated size         |  16.03 MiB |
+		|     * Commits             | 217.92 KiB |
+		|     * Trees               |  15.81 MiB |
+		|     * Blobs               |  11.68 KiB |
+		|     * Tags                |    132 B   |
+		|   * Disk size             | $(object_type_disk_usage all true) |
+		|     * Commits             | $(object_type_disk_usage commit true) |
+		|     * Trees               | $(object_type_disk_usage tree true) |
+		|     * Blobs               |  $(object_type_disk_usage blob true) |
+		|     * Tags                |    $(object_type_disk_usage tag) B   |
+		|                           |            |
+		| * Largest objects         |            |
+		|   * Commits               |            |
+		|     * Maximum size    [1] |    223 B   |
+		|     * Maximum parents [2] |      1     |
+		|   * Trees                 |            |
+		|     * Maximum size    [3] |  32.29 KiB |
+		|   * Blobs                 |            |
+		|     * Maximum size    [4] |     13 B   |
+		|   * Tags                  |            |
+		|     * Maximum size    [5] |    132 B   |
 
 		[1] 0dc91eb18580102a3a216c8bfecedeba2b9f9b9a
-		[2] 60665251ab71dbd8c18d9bf2174f4ee0d58aa06c
-		[3] 97d808e45116bf02103490294d3d46dad7a2ac62
-		[4] 4dae4f5954f5e6feb3577cfb1b181daa3fd3afd2
+		[2] 0dc91eb18580102a3a216c8bfecedeba2b9f9b9a
+		[3] 60665251ab71dbd8c18d9bf2174f4ee0d58aa06c
+		[4] 97d808e45116bf02103490294d3d46dad7a2ac62
+		[5] 4dae4f5954f5e6feb3577cfb1b181daa3fd3afd2
 		EOF
 
 		git repo structure >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err
 	)
 '
@@ -166,16 +169,18 @@ test_expect_success SHA1 'keyvalue and nul format' '
 		objects.commits.max_size=221
 		objects.commits.max_size_oid=de3508174b5c2ace6993da67cae9be9069e2df39
 		objects.trees.max_size=1335
 		objects.trees.max_size_oid=09931deea9d81ec21300d3e13c74412f32eacec5
 		objects.blobs.max_size=11
 		objects.blobs.max_size_oid=eaeeedced46482bd4281fda5a5f05ce24854151f
 		objects.tags.max_size=132
 		objects.tags.max_size_oid=1ee0f2b16ea37d895dbe9dbd76cd2ac70446176c
+		objects.commits.max_parents=1
+		objects.commits.max_parents_oid=de3508174b5c2ace6993da67cae9be9069e2df39
 		EOF
 
 		git repo structure --format=keyvalue >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err &&
 
 		# Replace key and value delimiters for nul format.

word-diff-align

git diff --no-index --histogram --color=always --unified=8 --word-diff-align data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
index 918af72..d003d64 100644
--- a/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/18952a1ef1a1__t__t1901-repo-structure.sh/new.sh
@@ -22,51 +22,52 @@ object_type_disk_usage() {
 }
 
 test_expect_success 'empty repository' '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
 	(
 		cd repo &&
 		cat >expect <<-\EOF &&
-		| Repository structure[-     -]| Value  |        # aligned 8->8 edited
-		| ------------------------[- -]| ------ |        # aligned 9->9 edited
-		| * References[-             -]|        |        # aligned 10->10 edited
-		|   * Count[-                -]|    0   |        # aligned 11->11 edited
-		|     * Branches[-           -]|    0   |        # aligned 12->12 edited
-		|     * Tags[-               -]|    0   |        # aligned 13->13 edited
-		|     * Remotes[-            -]|    0   |        # aligned 14->14 edited
-		|     * Others[-             -]|    0   |        # aligned 15->15 edited
-		|                          |        |
-		| * Reachable objects[-      -]|        |        # aligned 17->17 edited
-		|   * Count[-                -]|    0   |        # aligned 18->18 edited
-		|     * Commits[-            -]|    0   |        # aligned 19->19 edited
-		|     * Trees[-              -]|    0   |        # aligned 20->20 edited
-		|     * Blobs[-              -]|    0   |        # aligned 21->21 edited
-		|     * Tags[-               -]|    0   |        # aligned 22->22 edited
-		|   * Inflated size[-        -]|    0 B |        # aligned 23->23 edited
-		|     * Commits[-            -]|    0 B |        # aligned 24->24 edited
-		|     * Trees[-              -]|    0 B |        # aligned 25->25 edited
-		|     * Blobs[-              -]|    0 B |        # aligned 26->26 edited
-		|     * Tags[-               -]|    0 B |        # aligned 27->27 edited
-		|   * Disk size[-            -]|    0 B |        # aligned 28->28 edited
-		|     * Commits[-            -]|    0 B |        # aligned 29->29 edited
-		|     * Trees[-              -]|    0 B |        # aligned 30->30 edited
-		|     * Blobs[-              -]|    0 B |        # aligned 31->31 edited
-		|     * Tags[-               -]|    0 B |        # aligned 32->32 edited
-		|                          |        |
-		| * Largest objects[-        -]|        |        # aligned 34->34 edited
-		|   * Commits[-              -]|        |        # aligned 35->35 edited
-		|     * Maximum size[-       -]|    0 B |        # aligned 36->36 edited
-		|   * Trees[-                -]|        |        # aligned 37->38 edited
-		|     * Maximum size[-       -]|    0 B |        # aligned 38->39 edited
-		|   * Blobs[-                -]|        |        # aligned 39->40 edited
-		|     * Maximum size[-       -]|    0 B |        # aligned 40->41 edited
-		|   * Tags[-                 -]|        |        # aligned 41->42 edited
-		|     * Maximum size[-       -]|    0 B |        # aligned 42->43 edited
+		| Repository structure{+      +}| Value  |        # aligned 8->8 edited
+		| ------------------------{+- +}| ------ |        # aligned 9->9 edited
+		| * References{+              +}|        |        # aligned 10->10 edited
+		|   * Count{+                 +}|    0   |        # aligned 11->11 edited
+		|     * Branches{+            +}|    0   |        # aligned 12->12 edited
+		|     * Tags{+                +}|    0   |        # aligned 13->13 edited
+		|     * Remotes{+             +}|    0   |        # aligned 14->14 edited
+		|     * Others{+              +}|    0   |        # aligned 15->15 edited
+		|                           |        |
+		| * Reachable objects{+       +}|        |        # aligned 17->17 edited
+		|   * Count{+                 +}|    0   |        # aligned 18->18 edited
+		|     * Commits{+             +}|    0   |        # aligned 19->19 edited
+		|     * Trees{+               +}|    0   |        # aligned 20->20 edited
+		|     * Blobs{+               +}|    0   |        # aligned 21->21 edited
+		|     * Tags{+                +}|    0   |        # aligned 22->22 edited
+		|   * Inflated size{+         +}|    0 B |        # aligned 23->23 edited
+		|     * Commits{+             +}|    0 B |        # aligned 24->24 edited
+		|     * Trees{+               +}|    0 B |        # aligned 25->25 edited
+		|     * Blobs{+               +}|    0 B |        # aligned 26->26 edited
+		|     * Tags{+                +}|    0 B |        # aligned 27->27 edited
+		|   * Disk size{+             +}|    0 B |        # aligned 28->28 edited
+		|     * Commits{+             +}|    0 B |        # aligned 29->29 edited
+		|     * Trees{+               +}|    0 B |        # aligned 30->30 edited
+		|     * Blobs{+               +}|    0 B |        # aligned 31->31 edited
+		|     * Tags{+                +}|    0 B |        # aligned 32->32 edited
+		|                           |        |
+		| * Largest objects{+         +}|        |        # aligned 34->34 edited
+		|   * Commits{+               +}|        |        # aligned 35->35 edited
+		|     * Maximum size{+        +}|    0 B |        # aligned 36->36 edited
+		|     * Maximum parents     |    0   |
+		|   * Trees{+                 +}|        |        # aligned 37->38 edited
+		|     * Maximum size{+        +}|    0 B |        # aligned 38->39 edited
+		|   * Blobs{+                 +}|        |        # aligned 39->40 edited
+		|     * Maximum size{+        +}|    0 B |        # aligned 40->41 edited
+		|   * Tags{+                  +}|        |        # aligned 41->42 edited
+		|     * Maximum size{+        +}|    0 B |        # aligned 42->43 edited
 		EOF
 
 		git repo structure >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err
 	)
 '
@@ -84,56 +85,58 @@ test_expect_success SHA1 'repository with references and objects' '
 
 		# Also creates a commit, tree, and blob.
 		git notes add -m foo &&
 
 		# The tags disk size is handled specially due to the
 		# git-rev-list(1) --disk-usage=human option printing the full
 		# "byte/bytes" unit string instead of just "B".
 		cat >expect <<-EOF &&
-		| Repository structure[-     -]| Value      |        # aligned 8->8 edited
-		| ------------------------[- -]| ---------- |        # aligned 9->9 edited
-		| * References[-             -]|            |        # aligned 10->10 edited
-		|   * Count[-                -]|      4     |        # aligned 11->11 edited
-		|     * Branches[-           -]|      1     |        # aligned 12->12 edited
-		|     * Tags[-               -]|      1     |        # aligned 13->13 edited
-		|     * Remotes[-            -]|      1     |        # aligned 14->14 edited
-		|     * Others[-             -]|      1     |        # aligned 15->15 edited
-		|                          |            |
-		| * Reachable objects[-      -]|            |        # aligned 17->17 edited
-		|   * Count[-                -]|   3.02 k   |        # aligned 18->18 edited
-		|     * Commits[-            -]|   1.01 k   |        # aligned 19->19 edited
-		|     * Trees[-              -]|   1.01 k   |        # aligned 20->20 edited
-		|     * Blobs[-              -]|   1.01 k   |        # aligned 21->21 edited
-		|     * Tags[-               -]|      1     |        # aligned 22->22 edited
-		|   * Inflated size[-        -]|  16.03 MiB |        # aligned 23->23 edited
-		|     * Commits[-            -]| 217.92 KiB |        # aligned 24->24 edited
-		|     * Trees[-              -]|  15.81 MiB |        # aligned 25->25 edited
-		|     * Blobs[-              -]|  11.68 KiB |        # aligned 26->26 edited
-		|     * Tags[-               -]|    132 B   |        # aligned 27->27 edited
-		|   * Disk size[-            -]| $(object_type_disk_usage all true) |        # aligned 28->28 edited
-		|     * Commits[-            -]| $(object_type_disk_usage commit true) |        # aligned 29->29 edited
-		|     * Trees[-              -]| $(object_type_disk_usage tree true) |        # aligned 30->30 edited
-		|     * Blobs[-              -]|  $(object_type_disk_usage blob true) |        # aligned 31->31 edited
-		|     * Tags[-               -]|    $(object_type_disk_usage tag) B   |        # aligned 32->32 edited
-		|                          |            |
-		| * Largest objects[-        -]|            |        # aligned 34->34 edited
-		|   * Commits[-              -]|            |        # aligned 35->35 edited
-		|     * Maximum size[-   -][1] |    223 B   |        # aligned 36->36 edited
-		|   * Trees[-                -]|            |        # aligned 37->38 edited
-		|     * Maximum size[-   -][[-2-]] |  32.29 KiB |        # aligned 38->39 edited
-		|   * Blobs[-                -]|            |        # aligned 39->40 edited
-		|     * Maximum size[-   -][[-3-]] |     13 B   |        # aligned 40->41 edited
-		|   * Tags[-                 -]|            |        # aligned 41->42 edited
-		|     * Maximum size[-   -][[-4-]] |    132 B   |        # aligned 42->43 edited
+		| Repository structure{+      +}| Value      |        # aligned 8->8 edited
+		| ------------------------{+- +}| ---------- |        # aligned 9->9 edited
+		| * References{+              +}|            |        # aligned 10->10 edited
+		|   * Count{+                 +}|      4     |        # aligned 11->11 edited
+		|     * Branches{+            +}|      1     |        # aligned 12->12 edited
+		|     * Tags{+                +}|      1     |        # aligned 13->13 edited
+		|     * Remotes{+             +}|      1     |        # aligned 14->14 edited
+		|     * Others{+              +}|      1     |        # aligned 15->15 edited
+		|                           |            |
+		| * Reachable objects{+       +}|            |        # aligned 17->17 edited
+		|   * Count{+                 +}|   3.02 k   |        # aligned 18->18 edited
+		|     * Commits{+             +}|   1.01 k   |        # aligned 19->19 edited
+		|     * Trees{+               +}|   1.01 k   |        # aligned 20->20 edited
+		|     * Blobs{+               +}|   1.01 k   |        # aligned 21->21 edited
+		|     * Tags{+                +}|      1     |        # aligned 22->22 edited
+		|   * Inflated size{+         +}|  16.03 MiB |        # aligned 23->23 edited
+		|     * Commits{+             +}| 217.92 KiB |        # aligned 24->24 edited
+		|     * Trees{+               +}|  15.81 MiB |        # aligned 25->25 edited
+		|     * Blobs{+               +}|  11.68 KiB |        # aligned 26->26 edited
+		|     * Tags{+                +}|    132 B   |        # aligned 27->27 edited
+		|   * Disk size{+             +}| $(object_type_disk_usage all true) |        # aligned 28->28 edited
+		|     * Commits{+             +}| $(object_type_disk_usage commit true) |        # aligned 29->29 edited
+		|     * Trees{+               +}| $(object_type_disk_usage tree true) |        # aligned 30->30 edited
+		|     * Blobs{+               +}|  $(object_type_disk_usage blob true) |        # aligned 31->31 edited
+		|     * Tags{+                +}|    $(object_type_disk_usage tag) B   |        # aligned 32->32 edited
+		|                           |            |
+		| * Largest objects{+         +}|            |        # aligned 34->34 edited
+		|   * Commits{+               +}|            |        # aligned 35->35 edited
+		|     * Maximum size{+    +}[1] |    223 B   |        # aligned 36->36 edited
+		|     * Maximum parents [2] |      1     |
+		|   * Trees{+                 +}|            |        # aligned 37->38 edited
+		|     * Maximum size{+    +}[{+3+}] |  32.29 KiB |        # aligned 38->39 edited
+		|   * Blobs{+                 +}|            |        # aligned 39->40 edited
+		|     * Maximum size{+    +}[{+4+}] |     13 B   |        # aligned 40->41 edited
+		|   * Tags{+                  +}|            |        # aligned 41->42 edited
+		|     * Maximum size{+    +}[{+5+}] |    132 B   |        # aligned 42->43 edited
 
 		[1] 0dc91eb18580102a3a216c8bfecedeba2b9f9b9a
-		[[-2-]] 60665251ab71dbd8c18d9bf2174f4ee0d58aa06c        # aligned 45->47 edited
-		[[-3-]] 97d808e45116bf02103490294d3d46dad7a2ac62        # aligned 46->48 edited
-		[[-4-]] 4dae4f5954f5e6feb3577cfb1b181daa3fd3afd2        # aligned 47->49 edited
+		[2] 0dc91eb18580102a3a216c8bfecedeba2b9f9b9a
+		[{+3+}] 60665251ab71dbd8c18d9bf2174f4ee0d58aa06c        # aligned 45->47 edited
+		[{+4+}] 97d808e45116bf02103490294d3d46dad7a2ac62        # aligned 46->48 edited
+		[{+5+}] 4dae4f5954f5e6feb3577cfb1b181daa3fd3afd2        # aligned 47->49 edited
 		EOF
 
 		git repo structure >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err
 	)
 '
@@ -166,16 +169,18 @@ test_expect_success SHA1 'keyvalue and nul format' '
 		objects.commits.max_size=221
 		objects.commits.max_size_oid=de3508174b5c2ace6993da67cae9be9069e2df39
 		objects.trees.max_size=1335
 		objects.trees.max_size_oid=09931deea9d81ec21300d3e13c74412f32eacec5
 		objects.blobs.max_size=11
 		objects.blobs.max_size_oid=eaeeedced46482bd4281fda5a5f05ce24854151f
 		objects.tags.max_size=132
 		objects.tags.max_size_oid=1ee0f2b16ea37d895dbe9dbd76cd2ac70446176c
+		objects.commits.max_parents=1
+		objects.commits.max_parents_oid=de3508174b5c2ace6993da67cae9be9069e2df39
 		EOF
 
 		git repo structure --format=keyvalue >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err &&
 
 		# Replace key and value delimiters for nul format.

[014] git | e00bb8c76e18__t__t1901-repo-structure.sh

need=table-spacing align word
old: data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh
new: data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
note: table width changes in shell test expected output

histogram

git diff --no-index --histogram --color=always --unified=8 data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
index 1999f32..918af72 100644
--- a/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
@@ -22,51 +22,51 @@ object_type_disk_usage() {
 }
 
 test_expect_success 'empty repository' '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
 	(
 		cd repo &&
 		cat >expect <<-\EOF &&
-		| Repository structure | Value  |
-		| -------------------- | ------ |
-		| * References         |        |
-		|   * Count            |    0   |
-		|     * Branches       |    0   |
-		|     * Tags           |    0   |
-		|     * Remotes        |    0   |
-		|     * Others         |    0   |
-		|                      |        |
-		| * Reachable objects  |        |
-		|   * Count            |    0   |
-		|     * Commits        |    0   |
-		|     * Trees          |    0   |
-		|     * Blobs          |    0   |
-		|     * Tags           |    0   |
-		|   * Inflated size    |    0 B |
-		|     * Commits        |    0 B |
-		|     * Trees          |    0 B |
-		|     * Blobs          |    0 B |
-		|     * Tags           |    0 B |
-		|   * Disk size        |    0 B |
-		|     * Commits        |    0 B |
-		|     * Trees          |    0 B |
-		|     * Blobs          |    0 B |
-		|     * Tags           |    0 B |
-		|                      |        |
-		| * Largest objects    |        |
-		|   * Commits          |        |
-		|     * Maximum size   |    0 B |
-		|   * Trees            |        |
-		|     * Maximum size   |    0 B |
-		|   * Blobs            |        |
-		|     * Maximum size   |    0 B |
-		|   * Tags             |        |
-		|     * Maximum size   |    0 B |
+		| Repository structure     | Value  |
+		| ------------------------ | ------ |
+		| * References             |        |
+		|   * Count                |    0   |
+		|     * Branches           |    0   |
+		|     * Tags               |    0   |
+		|     * Remotes            |    0   |
+		|     * Others             |    0   |
+		|                          |        |
+		| * Reachable objects      |        |
+		|   * Count                |    0   |
+		|     * Commits            |    0   |
+		|     * Trees              |    0   |
+		|     * Blobs              |    0   |
+		|     * Tags               |    0   |
+		|   * Inflated size        |    0 B |
+		|     * Commits            |    0 B |
+		|     * Trees              |    0 B |
+		|     * Blobs              |    0 B |
+		|     * Tags               |    0 B |
+		|   * Disk size            |    0 B |
+		|     * Commits            |    0 B |
+		|     * Trees              |    0 B |
+		|     * Blobs              |    0 B |
+		|     * Tags               |    0 B |
+		|                          |        |
+		| * Largest objects        |        |
+		|   * Commits              |        |
+		|     * Maximum size       |    0 B |
+		|   * Trees                |        |
+		|     * Maximum size       |    0 B |
+		|   * Blobs                |        |
+		|     * Maximum size       |    0 B |
+		|   * Tags                 |        |
+		|     * Maximum size       |    0 B |
 		EOF
 
 		git repo structure >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err
 	)
 '
@@ -84,51 +84,56 @@ test_expect_success SHA1 'repository with references and objects' '
 
 		# Also creates a commit, tree, and blob.
 		git notes add -m foo &&
 
 		# The tags disk size is handled specially due to the
 		# git-rev-list(1) --disk-usage=human option printing the full
 		# "byte/bytes" unit string instead of just "B".
 		cat >expect <<-EOF &&
-		| Repository structure | Value      |
-		| -------------------- | ---------- |
-		| * References         |            |
-		|   * Count            |      4     |
-		|     * Branches       |      1     |
-		|     * Tags           |      1     |
-		|     * Remotes        |      1     |
-		|     * Others         |      1     |
-		|                      |            |
-		| * Reachable objects  |            |
-		|   * Count            |   3.02 k   |
-		|     * Commits        |   1.01 k   |
-		|     * Trees          |   1.01 k   |
-		|     * Blobs          |   1.01 k   |
-		|     * Tags           |      1     |
-		|   * Inflated size    |  16.03 MiB |
-		|     * Commits        | 217.92 KiB |
-		|     * Trees          |  15.81 MiB |
-		|     * Blobs          |  11.68 KiB |
-		|     * Tags           |    132 B   |
-		|   * Disk size        | $(object_type_disk_usage all true) |
-		|     * Commits        | $(object_type_disk_usage commit true) |
-		|     * Trees          | $(object_type_disk_usage tree true) |
-		|     * Blobs          |  $(object_type_disk_usage blob true) |
-		|     * Tags           |    $(object_type_disk_usage tag) B   |
-		|                      |            |
-		| * Largest objects    |            |
-		|   * Commits          |            |
-		|     * Maximum size   |    223 B   |
-		|   * Trees            |            |
-		|     * Maximum size   |  32.29 KiB |
-		|   * Blobs            |            |
-		|     * Maximum size   |     13 B   |
-		|   * Tags             |            |
-		|     * Maximum size   |    132 B   |
+		| Repository structure     | Value      |
+		| ------------------------ | ---------- |
+		| * References             |            |
+		|   * Count                |      4     |
+		|     * Branches           |      1     |
+		|     * Tags               |      1     |
+		|     * Remotes            |      1     |
+		|     * Others             |      1     |
+		|                          |            |
+		| * Reachable objects      |            |
+		|   * Count                |   3.02 k   |
+		|     * Commits            |   1.01 k   |
+		|     * Trees              |   1.01 k   |
+		|     * Blobs              |   1.01 k   |
+		|     * Tags               |      1     |
+		|   * Inflated size        |  16.03 MiB |
+		|     * Commits            | 217.92 KiB |
+		|     * Trees              |  15.81 MiB |
+		|     * Blobs              |  11.68 KiB |
+		|     * Tags               |    132 B   |
+		|   * Disk size            | $(object_type_disk_usage all true) |
+		|     * Commits            | $(object_type_disk_usage commit true) |
+		|     * Trees              | $(object_type_disk_usage tree true) |
+		|     * Blobs              |  $(object_type_disk_usage blob true) |
+		|     * Tags               |    $(object_type_disk_usage tag) B   |
+		|                          |            |
+		| * Largest objects        |            |
+		|   * Commits              |            |
+		|     * Maximum size   [1] |    223 B   |
+		|   * Trees                |            |
+		|     * Maximum size   [2] |  32.29 KiB |
+		|   * Blobs                |            |
+		|     * Maximum size   [3] |     13 B   |
+		|   * Tags                 |            |
+		|     * Maximum size   [4] |    132 B   |
+
+		[1] 0dc91eb18580102a3a216c8bfecedeba2b9f9b9a
+		[2] 60665251ab71dbd8c18d9bf2174f4ee0d58aa06c
+		[3] 97d808e45116bf02103490294d3d46dad7a2ac62
+		[4] 4dae4f5954f5e6feb3577cfb1b181daa3fd3afd2
 		EOF
 
 		git repo structure >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err
 	)
 '

word-diff

git diff --no-index --histogram --color=always --unified=8 --word-diff=plain data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
index 1999f32..918af72 100644
--- a/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
@@ -22,51 +22,51 @@ object_type_disk_usage() {
}

test_expect_success 'empty repository' '
	test_when_finished "rm -rf repo" &&
	git init repo &&
	(
		cd repo &&
		cat >expect <<-\EOF &&
		| Repository structure     | Value  |
		| [----------------------]{+------------------------+} | ------ |
		| * References             |        |
		|   * Count                |    0   |
		|     * Branches           |    0   |
		|     * Tags               |    0   |
		|     * Remotes            |    0   |
		|     * Others             |    0   |
		|                          |        |
		| * Reachable objects      |        |
		|   * Count                |    0   |
		|     * Commits            |    0   |
		|     * Trees              |    0   |
		|     * Blobs              |    0   |
		|     * Tags               |    0   |
		|   * Inflated size        |    0 B |
		|     * Commits            |    0 B |
		|     * Trees              |    0 B |
		|     * Blobs              |    0 B |
		|     * Tags               |    0 B |
		|   * Disk size            |    0 B |
		|     * Commits            |    0 B |
		|     * Trees              |    0 B |
		|     * Blobs              |    0 B |
		|     * Tags               |    0 B |
		|                          |        |
		| * Largest objects        |        |
		|   * Commits              |        |
		|     * Maximum size       |    0 B |
		|   * Trees                |        |
		|     * Maximum size       |    0 B |
		|   * Blobs                |        |
		|     * Maximum size       |    0 B |
		|   * Tags                 |        |
		|     * Maximum size       |    0 B |
		EOF

		git repo structure >out 2>err &&

		test_cmp expect out &&
		test_line_count = 0 err
	)
'
@@ -84,51 +84,56 @@ test_expect_success SHA1 'repository with references and objects' '

		# Also creates a commit, tree, and blob.
		git notes add -m foo &&

		# The tags disk size is handled specially due to the
		# git-rev-list(1) --disk-usage=human option printing the full
		# "byte/bytes" unit string instead of just "B".
		cat >expect <<-EOF &&
		| Repository structure     | Value      |
		| [----------------------]{+------------------------+} | ---------- |
		| * References             |            |
		|   * Count                |      4     |
		|     * Branches           |      1     |
		|     * Tags               |      1     |
		|     * Remotes            |      1     |
		|     * Others             |      1     |
		|                          |            |
		| * Reachable objects      |            |
		|   * Count                |   3.02 k   |
		|     * Commits            |   1.01 k   |
		|     * Trees              |   1.01 k   |
		|     * Blobs              |   1.01 k   |
		|     * Tags               |      1     |
		|   * Inflated size        |  16.03 MiB |
		|     * Commits            | 217.92 KiB |
		|     * Trees              |  15.81 MiB |
		|     * Blobs              |  11.68 KiB |
		|     * Tags               |    132 B   |
		|   * Disk size            | $(object_type_disk_usage all true) |
		|     * Commits            | $(object_type_disk_usage commit true) |
		|     * Trees              | $(object_type_disk_usage tree true) |
		|     * Blobs              |  $(object_type_disk_usage blob true) |
		|     * Tags               |    $(object_type_disk_usage tag) B   |
		|                          |            |
		| * Largest objects        |            |
		|   * Commits              |            |
		|     * Maximum size   {+[1]+} |    223 B   |
		|   * Trees                |            |
		|     * Maximum size   {+[2]+} |  32.29 KiB |
		|   * Blobs                |            |
		|     * Maximum size   {+[3]+} |     13 B   |
		|   * Tags                 |            |
		|     * Maximum size   {+[4]+} |    132 B   |

		{+[1] 0dc91eb18580102a3a216c8bfecedeba2b9f9b9a+}
{+		[2] 60665251ab71dbd8c18d9bf2174f4ee0d58aa06c+}
{+		[3] 97d808e45116bf02103490294d3d46dad7a2ac62+}
{+		[4] 4dae4f5954f5e6feb3577cfb1b181daa3fd3afd2+}
		EOF

		git repo structure >out 2>err &&

		test_cmp expect out &&
		test_line_count = 0 err
	)
'

color-moved

git diff --no-index --histogram --color=always --unified=8 --color-moved=blocks data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
index 1999f32..918af72 100644
--- a/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
@@ -22,51 +22,51 @@ object_type_disk_usage() {
 }
 
 test_expect_success 'empty repository' '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
 	(
 		cd repo &&
 		cat >expect <<-\EOF &&
-		| Repository structure | Value  |
-		| -------------------- | ------ |
-		| * References         |        |
-		|   * Count            |    0   |
-		|     * Branches       |    0   |
-		|     * Tags           |    0   |
-		|     * Remotes        |    0   |
-		|     * Others         |    0   |
-		|                      |        |
-		| * Reachable objects  |        |
-		|   * Count            |    0   |
-		|     * Commits        |    0   |
-		|     * Trees          |    0   |
-		|     * Blobs          |    0   |
-		|     * Tags           |    0   |
-		|   * Inflated size    |    0 B |
-		|     * Commits        |    0 B |
-		|     * Trees          |    0 B |
-		|     * Blobs          |    0 B |
-		|     * Tags           |    0 B |
-		|   * Disk size        |    0 B |
-		|     * Commits        |    0 B |
-		|     * Trees          |    0 B |
-		|     * Blobs          |    0 B |
-		|     * Tags           |    0 B |
-		|                      |        |
-		| * Largest objects    |        |
-		|   * Commits          |        |
-		|     * Maximum size   |    0 B |
-		|   * Trees            |        |
-		|     * Maximum size   |    0 B |
-		|   * Blobs            |        |
-		|     * Maximum size   |    0 B |
-		|   * Tags             |        |
-		|     * Maximum size   |    0 B |
+		| Repository structure     | Value  |
+		| ------------------------ | ------ |
+		| * References             |        |
+		|   * Count                |    0   |
+		|     * Branches           |    0   |
+		|     * Tags               |    0   |
+		|     * Remotes            |    0   |
+		|     * Others             |    0   |
+		|                          |        |
+		| * Reachable objects      |        |
+		|   * Count                |    0   |
+		|     * Commits            |    0   |
+		|     * Trees              |    0   |
+		|     * Blobs              |    0   |
+		|     * Tags               |    0   |
+		|   * Inflated size        |    0 B |
+		|     * Commits            |    0 B |
+		|     * Trees              |    0 B |
+		|     * Blobs              |    0 B |
+		|     * Tags               |    0 B |
+		|   * Disk size            |    0 B |
+		|     * Commits            |    0 B |
+		|     * Trees              |    0 B |
+		|     * Blobs              |    0 B |
+		|     * Tags               |    0 B |
+		|                          |        |
+		| * Largest objects        |        |
+		|   * Commits              |        |
+		|     * Maximum size       |    0 B |
+		|   * Trees                |        |
+		|     * Maximum size       |    0 B |
+		|   * Blobs                |        |
+		|     * Maximum size       |    0 B |
+		|   * Tags                 |        |
+		|     * Maximum size       |    0 B |
 		EOF
 
 		git repo structure >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err
 	)
 '
@@ -84,51 +84,56 @@ test_expect_success SHA1 'repository with references and objects' '
 
 		# Also creates a commit, tree, and blob.
 		git notes add -m foo &&
 
 		# The tags disk size is handled specially due to the
 		# git-rev-list(1) --disk-usage=human option printing the full
 		# "byte/bytes" unit string instead of just "B".
 		cat >expect <<-EOF &&
-		| Repository structure | Value      |
-		| -------------------- | ---------- |
-		| * References         |            |
-		|   * Count            |      4     |
-		|     * Branches       |      1     |
-		|     * Tags           |      1     |
-		|     * Remotes        |      1     |
-		|     * Others         |      1     |
-		|                      |            |
-		| * Reachable objects  |            |
-		|   * Count            |   3.02 k   |
-		|     * Commits        |   1.01 k   |
-		|     * Trees          |   1.01 k   |
-		|     * Blobs          |   1.01 k   |
-		|     * Tags           |      1     |
-		|   * Inflated size    |  16.03 MiB |
-		|     * Commits        | 217.92 KiB |
-		|     * Trees          |  15.81 MiB |
-		|     * Blobs          |  11.68 KiB |
-		|     * Tags           |    132 B   |
-		|   * Disk size        | $(object_type_disk_usage all true) |
-		|     * Commits        | $(object_type_disk_usage commit true) |
-		|     * Trees          | $(object_type_disk_usage tree true) |
-		|     * Blobs          |  $(object_type_disk_usage blob true) |
-		|     * Tags           |    $(object_type_disk_usage tag) B   |
-		|                      |            |
-		| * Largest objects    |            |
-		|   * Commits          |            |
-		|     * Maximum size   |    223 B   |
-		|   * Trees            |            |
-		|     * Maximum size   |  32.29 KiB |
-		|   * Blobs            |            |
-		|     * Maximum size   |     13 B   |
-		|   * Tags             |            |
-		|     * Maximum size   |    132 B   |
+		| Repository structure     | Value      |
+		| ------------------------ | ---------- |
+		| * References             |            |
+		|   * Count                |      4     |
+		|     * Branches           |      1     |
+		|     * Tags               |      1     |
+		|     * Remotes            |      1     |
+		|     * Others             |      1     |
+		|                          |            |
+		| * Reachable objects      |            |
+		|   * Count                |   3.02 k   |
+		|     * Commits            |   1.01 k   |
+		|     * Trees              |   1.01 k   |
+		|     * Blobs              |   1.01 k   |
+		|     * Tags               |      1     |
+		|   * Inflated size        |  16.03 MiB |
+		|     * Commits            | 217.92 KiB |
+		|     * Trees              |  15.81 MiB |
+		|     * Blobs              |  11.68 KiB |
+		|     * Tags               |    132 B   |
+		|   * Disk size            | $(object_type_disk_usage all true) |
+		|     * Commits            | $(object_type_disk_usage commit true) |
+		|     * Trees              | $(object_type_disk_usage tree true) |
+		|     * Blobs              |  $(object_type_disk_usage blob true) |
+		|     * Tags               |    $(object_type_disk_usage tag) B   |
+		|                          |            |
+		| * Largest objects        |            |
+		|   * Commits              |            |
+		|     * Maximum size   [1] |    223 B   |
+		|   * Trees                |            |
+		|     * Maximum size   [2] |  32.29 KiB |
+		|   * Blobs                |            |
+		|     * Maximum size   [3] |     13 B   |
+		|   * Tags                 |            |
+		|     * Maximum size   [4] |    132 B   |
+
+		[1] 0dc91eb18580102a3a216c8bfecedeba2b9f9b9a
+		[2] 60665251ab71dbd8c18d9bf2174f4ee0d58aa06c
+		[3] 97d808e45116bf02103490294d3d46dad7a2ac62
+		[4] 4dae4f5954f5e6feb3577cfb1b181daa3fd3afd2
 		EOF
 
 		git repo structure >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err
 	)
 '

word-diff-align

git diff --no-index --histogram --color=always --unified=8 --word-diff-align data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
index 1999f32..918af72 100644
--- a/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/e00bb8c76e18__t__t1901-repo-structure.sh/new.sh
@@ -22,51 +22,51 @@ object_type_disk_usage() {
 }
 
 test_expect_success 'empty repository' '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
 	(
 		cd repo &&
 		cat >expect <<-\EOF &&
-		| Repository structure[- -]| Value  |        # aligned 8->8 edited
-		| --------------------[- -]| ------ |        # aligned 9->9 edited
-		| * References[-         -]|        |        # aligned 10->10 edited
-		|   * Count[-            -]|    0   |        # aligned 11->11 edited
-		|     * Branches[-       -]|    0   |        # aligned 12->12 edited
-		|     * Tags[-           -]|    0   |        # aligned 13->13 edited
-		|     * Remotes[-        -]|    0   |        # aligned 14->14 edited
-		|     * Others[-         -]|    0   |        # aligned 15->15 edited
-		|                      |        |
-		| * Reachable objects[-  -]|        |        # aligned 17->17 edited
-		|   * Count[-            -]|    0   |        # aligned 18->18 edited
-		|     * Commits[-        -]|    0   |        # aligned 19->19 edited
-		|     * Trees[-          -]|    0   |        # aligned 20->20 edited
-		|     * Blobs[-          -]|    0   |        # aligned 21->21 edited
-		|     * Tags[-           -]|    0   |        # aligned 22->22 edited
-		|   * Inflated size[-    -]|    0 B |        # aligned 23->23 edited
-		|     * Commits[-        -]|    0 B |        # aligned 24->24 edited
-		|     * Trees[-          -]|    0 B |        # aligned 25->25 edited
-		|     * Blobs[-          -]|    0 B |        # aligned 26->26 edited
-		|     * Tags[-           -]|    0 B |        # aligned 27->27 edited
-		|   * Disk size[-        -]|    0 B |        # aligned 28->28 edited
-		|     * Commits[-        -]|    0 B |        # aligned 29->29 edited
-		|     * Trees[-          -]|    0 B |        # aligned 30->30 edited
-		|     * Blobs[-          -]|    0 B |        # aligned 31->31 edited
-		|     * Tags[-           -]|    0 B |        # aligned 32->32 edited
-		|                      |        |
-		| * Largest objects[-    -]|        |        # aligned 34->34 edited
-		|   * Commits[-          -]|        |        # aligned 35->35 edited
-		|     * Maximum size[-   -]|    0 B |        # aligned 36->36 edited
-		|   * Trees[-            -]|        |        # aligned 37->37 edited
-		|     * Maximum size[-   -]|    0 B |        # aligned 38->38 edited
-		|   * Blobs[-            -]|        |        # aligned 39->39 edited
-		|     * Maximum size[-   -]|    0 B |        # aligned 40->40 edited
-		|   * Tags[-             -]|        |        # aligned 41->41 edited
-		|     * Maximum size[-   -]|    0 B |        # aligned 42->42 edited
+		| Repository structure{+     +}| Value  |        # aligned 8->8 edited
+		| --------------------{+---- +}| ------ |        # aligned 9->9 edited
+		| * References{+             +}|        |        # aligned 10->10 edited
+		|   * Count{+                +}|    0   |        # aligned 11->11 edited
+		|     * Branches{+           +}|    0   |        # aligned 12->12 edited
+		|     * Tags{+               +}|    0   |        # aligned 13->13 edited
+		|     * Remotes{+            +}|    0   |        # aligned 14->14 edited
+		|     * Others{+             +}|    0   |        # aligned 15->15 edited
+		|                          |        |
+		| * Reachable objects{+      +}|        |        # aligned 17->17 edited
+		|   * Count{+                +}|    0   |        # aligned 18->18 edited
+		|     * Commits{+            +}|    0   |        # aligned 19->19 edited
+		|     * Trees{+              +}|    0   |        # aligned 20->20 edited
+		|     * Blobs{+              +}|    0   |        # aligned 21->21 edited
+		|     * Tags{+               +}|    0   |        # aligned 22->22 edited
+		|   * Inflated size{+        +}|    0 B |        # aligned 23->23 edited
+		|     * Commits{+            +}|    0 B |        # aligned 24->24 edited
+		|     * Trees{+              +}|    0 B |        # aligned 25->25 edited
+		|     * Blobs{+              +}|    0 B |        # aligned 26->26 edited
+		|     * Tags{+               +}|    0 B |        # aligned 27->27 edited
+		|   * Disk size{+            +}|    0 B |        # aligned 28->28 edited
+		|     * Commits{+            +}|    0 B |        # aligned 29->29 edited
+		|     * Trees{+              +}|    0 B |        # aligned 30->30 edited
+		|     * Blobs{+              +}|    0 B |        # aligned 31->31 edited
+		|     * Tags{+               +}|    0 B |        # aligned 32->32 edited
+		|                          |        |
+		| * Largest objects{+        +}|        |        # aligned 34->34 edited
+		|   * Commits{+              +}|        |        # aligned 35->35 edited
+		|     * Maximum size{+       +}|    0 B |        # aligned 36->36 edited
+		|   * Trees{+                +}|        |        # aligned 37->37 edited
+		|     * Maximum size{+       +}|    0 B |        # aligned 38->38 edited
+		|   * Blobs{+                +}|        |        # aligned 39->39 edited
+		|     * Maximum size{+       +}|    0 B |        # aligned 40->40 edited
+		|   * Tags{+                 +}|        |        # aligned 41->41 edited
+		|     * Maximum size{+       +}|    0 B |        # aligned 42->42 edited
 		EOF
 
 		git repo structure >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err
 	)
 '
@@ -84,51 +84,56 @@ test_expect_success SHA1 'repository with references and objects' '
 
 		# Also creates a commit, tree, and blob.
 		git notes add -m foo &&
 
 		# The tags disk size is handled specially due to the
 		# git-rev-list(1) --disk-usage=human option printing the full
 		# "byte/bytes" unit string instead of just "B".
 		cat >expect <<-EOF &&
-		| Repository structure[- -]| Value      |        # aligned 8->8 edited
-		| --------------------[- -]| ---------- |        # aligned 9->9 edited
-		| * References[-         -]|            |        # aligned 10->10 edited
-		|   * Count[-            -]|      4     |        # aligned 11->11 edited
-		|     * Branches[-       -]|      1     |        # aligned 12->12 edited
-		|     * Tags[-           -]|      1     |        # aligned 13->13 edited
-		|     * Remotes[-        -]|      1     |        # aligned 14->14 edited
-		|     * Others[-         -]|      1     |        # aligned 15->15 edited
-		|                      |            |
-		| * Reachable objects[-  -]|            |        # aligned 17->17 edited
-		|   * Count[-            -]|   3.02 k   |        # aligned 18->18 edited
-		|     * Commits[-        -]|   1.01 k   |        # aligned 19->19 edited
-		|     * Trees[-          -]|   1.01 k   |        # aligned 20->20 edited
-		|     * Blobs[-          -]|   1.01 k   |        # aligned 21->21 edited
-		|     * Tags[-           -]|      1     |        # aligned 22->22 edited
-		|   * Inflated size[-    -]|  16.03 MiB |        # aligned 23->23 edited
-		|     * Commits[-        -]| 217.92 KiB |        # aligned 24->24 edited
-		|     * Trees[-          -]|  15.81 MiB |        # aligned 25->25 edited
-		|     * Blobs[-          -]|  11.68 KiB |        # aligned 26->26 edited
-		|     * Tags[-           -]|    132 B   |        # aligned 27->27 edited
-		|   * Disk size[-        -]| $(object_type_disk_usage all true) |        # aligned 28->28 edited
-		|     * Commits[-        -]| $(object_type_disk_usage commit true) |        # aligned 29->29 edited
-		|     * Trees[-          -]| $(object_type_disk_usage tree true) |        # aligned 30->30 edited
-		|     * Blobs[-          -]|  $(object_type_disk_usage blob true) |        # aligned 31->31 edited
-		|     * Tags[-           -]|    $(object_type_disk_usage tag) B   |        # aligned 32->32 edited
-		|                      |            |
-		| * Largest objects[-    -]|            |        # aligned 34->34 edited
-		|   * Commits[-          -]|            |        # aligned 35->35 edited
-		|     * Maximum size[-   -]|    223 B   |        # aligned 36->36 edited
-		|   * Trees[-            -]|            |        # aligned 37->37 edited
-		|     * Maximum size[-   -]|  32.29 KiB |        # aligned 38->38 edited
-		|   * Blobs[-            -]|            |        # aligned 39->39 edited
-		|     * Maximum size[-   -]|     13 B   |        # aligned 40->40 edited
-		|   * Tags[-             -]|            |        # aligned 41->41 edited
-		|     * Maximum size[-   -]|    132 B   |        # aligned 42->42 edited
+		| Repository structure{+     +}| Value      |        # aligned 8->8 edited
+		| --------------------{+---- +}| ---------- |        # aligned 9->9 edited
+		| * References{+             +}|            |        # aligned 10->10 edited
+		|   * Count{+                +}|      4     |        # aligned 11->11 edited
+		|     * Branches{+           +}|      1     |        # aligned 12->12 edited
+		|     * Tags{+               +}|      1     |        # aligned 13->13 edited
+		|     * Remotes{+            +}|      1     |        # aligned 14->14 edited
+		|     * Others{+             +}|      1     |        # aligned 15->15 edited
+		|                          |            |
+		| * Reachable objects{+      +}|            |        # aligned 17->17 edited
+		|   * Count{+                +}|   3.02 k   |        # aligned 18->18 edited
+		|     * Commits{+            +}|   1.01 k   |        # aligned 19->19 edited
+		|     * Trees{+              +}|   1.01 k   |        # aligned 20->20 edited
+		|     * Blobs{+              +}|   1.01 k   |        # aligned 21->21 edited
+		|     * Tags{+               +}|      1     |        # aligned 22->22 edited
+		|   * Inflated size{+        +}|  16.03 MiB |        # aligned 23->23 edited
+		|     * Commits{+            +}| 217.92 KiB |        # aligned 24->24 edited
+		|     * Trees{+              +}|  15.81 MiB |        # aligned 25->25 edited
+		|     * Blobs{+              +}|  11.68 KiB |        # aligned 26->26 edited
+		|     * Tags{+               +}|    132 B   |        # aligned 27->27 edited
+		|   * Disk size{+            +}| $(object_type_disk_usage all true) |        # aligned 28->28 edited
+		|     * Commits{+            +}| $(object_type_disk_usage commit true) |        # aligned 29->29 edited
+		|     * Trees{+              +}| $(object_type_disk_usage tree true) |        # aligned 30->30 edited
+		|     * Blobs{+              +}|  $(object_type_disk_usage blob true) |        # aligned 31->31 edited
+		|     * Tags{+               +}|    $(object_type_disk_usage tag) B   |        # aligned 32->32 edited
+		|                          |            |
+		| * Largest objects{+        +}|            |        # aligned 34->34 edited
+		|   * Commits{+              +}|            |        # aligned 35->35 edited
+		|     * Maximum size{+   [1] +}|    223 B   |        # aligned 36->36 edited
+		|   * Trees{+                +}|            |        # aligned 37->37 edited
+		|     * Maximum size{+   [2] +}|  32.29 KiB |        # aligned 38->38 edited
+		|   * Blobs{+                +}|            |        # aligned 39->39 edited
+		|     * Maximum size{+   [3] +}|     13 B   |        # aligned 40->40 edited
+		|   * Tags{+                 +}|            |        # aligned 41->41 edited
+		|     * Maximum size{+   [4] +}|    132 B   |        # aligned 42->42 edited
+
+		[1] 0dc91eb18580102a3a216c8bfecedeba2b9f9b9a
+		[2] 60665251ab71dbd8c18d9bf2174f4ee0d58aa06c
+		[3] 97d808e45116bf02103490294d3d46dad7a2ac62
+		[4] 4dae4f5954f5e6feb3577cfb1b181daa3fd3afd2
 		EOF
 
 		git repo structure >out 2>err &&
 
 		test_cmp expect out &&
 		test_line_count = 0 err
 	)
 '

[015] git | 63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh

need=shell-test-rewrite align remote word
old: data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh
new: data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
note: shell setup block wrapped into test_expect_success with quoting/indent changes

histogram

git diff --no-index --histogram --color=always --unified=8 data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
index ead4045..8fa5940 100644
--- a/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
@@ -2,22 +2,25 @@
 #
 # Copyright (c) 2008 Jan Krüger
 #
 
 test_description='git svn respects rewriteRoot during rebuild'
 
 . ./lib-git-svn.sh
 
-mkdir import
-(cd import
-	touch foo
-	svn_cmd import -m 'import for git svn' . "$svnrepo" >/dev/null
-)
-rm -rf import
+test_expect_success 'setup svn repository' '
+	test_when_finished "rm -rf import" &&
+	mkdir import &&
+	(
+		cd import &&
+		touch foo &&
+		svn_cmd import -m "import for git svn" . "$svnrepo" >/dev/null
+	)
+	'
 
 test_expect_success 'init, fetch and checkout repository' '
 	git svn init --rewrite-root=http://invalid.invalid/ "$svnrepo" &&
 	git svn fetch &&
 	git checkout -b mybranch remotes/git-svn
 	'
 
 test_expect_success 'remove rev_map' '

word-diff

git diff --no-index --histogram --color=always --unified=8 --word-diff=plain data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
index ead4045..8fa5940 100644
--- a/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
@@ -2,22 +2,25 @@
#
# Copyright (c) 2008 Jan Krüger
#

test_description='git svn respects rewriteRoot during rebuild'

. ./lib-git-svn.sh

{+test_expect_success 'setup svn repository' '+}
{+	test_when_finished "rm -rf import" &&+}
	mkdir import [-(cd-]{+&&+}
{+	(+}
{+		cd+} import {+&&+}
		touch foo {+&&+}
		svn_cmd import -m [-'import-]{+"import+} for git [-svn'-]{+svn"+} . "$svnrepo" >/dev/null
	)
	[-rm -rf import-]{+'+}

test_expect_success 'init, fetch and checkout repository' '
	git svn init --rewrite-root=http://invalid.invalid/ "$svnrepo" &&
	git svn fetch &&
	git checkout -b mybranch remotes/git-svn
	'

test_expect_success 'remove rev_map' '

color-moved

git diff --no-index --histogram --color=always --unified=8 --color-moved=blocks data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
index ead4045..8fa5940 100644
--- a/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
@@ -2,22 +2,25 @@
 #
 # Copyright (c) 2008 Jan Krüger
 #
 
 test_description='git svn respects rewriteRoot during rebuild'
 
 . ./lib-git-svn.sh
 
-mkdir import
-(cd import
-	touch foo
-	svn_cmd import -m 'import for git svn' . "$svnrepo" >/dev/null
-)
-rm -rf import
+test_expect_success 'setup svn repository' '
+	test_when_finished "rm -rf import" &&
+	mkdir import &&
+	(
+		cd import &&
+		touch foo &&
+		svn_cmd import -m "import for git svn" . "$svnrepo" >/dev/null
+	)
+	'
 
 test_expect_success 'init, fetch and checkout repository' '
 	git svn init --rewrite-root=http://invalid.invalid/ "$svnrepo" &&
 	git svn fetch &&
 	git checkout -b mybranch remotes/git-svn
 	'
 
 test_expect_success 'remove rev_map' '

word-diff-align

git diff --no-index --histogram --color=always --unified=8 --word-diff-align data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
index ead4045..8fa5940 100644
--- a/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/63c00a677b2b__t__t9123-git-svn-rebuild-with-rewriteroot.sh/new.sh
@@ -2,22 +2,25 @@
 #
 # Copyright (c) 2008 Jan Krüger
 #
 
 test_description='git svn respects rewriteRoot during rebuild'
 
 . ./lib-git-svn.sh
 
-mkdir import
-[-(-]cd import        # aligned 9->12 edited
-[-	-]touch foo        # aligned 10->13 edited
-[-	-]svn_cmd import -m[- '-]import for git svn[-' -]. "$svnrepo" >/dev/null        # aligned 11->14 edited
-)        # aligned 12->15 edited
-rm -rf import
+test_expect_success 'setup svn repository' '
+	test_when_finished "rm -rf import" &&
+	mkdir import &&
+	(
+{+		+}cd import{+ &&+}        # aligned 9->12 edited
+{+		+}touch foo{+ &&+}        # aligned 10->13 edited
+{+		+}svn_cmd import -m{+ "+}import for git svn{+" +}. "$svnrepo" >/dev/null        # aligned 11->14 edited
+{+	+})        # aligned 12->15 edited
+	'
 
 test_expect_success 'init, fetch and checkout repository' '
 	git svn init --rewrite-root=http://invalid.invalid/ "$svnrepo" &&
 	git svn fetch &&
 	git checkout -b mybranch remotes/git-svn
 	'
 
 test_expect_success 'remove rev_map' '

[016] git | 53592d68e868__t__t1423-ref-backend.sh

need=shell-test-rewrite align moved remote word
old: data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh
new: data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
note: indentation and command-chain rewrite stress case

histogram

git diff --no-index --histogram --color=always --unified=8 data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
index 82cccb7..fd47d77 100644
--- a/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
@@ -6,73 +6,122 @@ test_description='Test reference backend URIs'
 
 # Run a git command with the provided reference storage. Reset the backend
 # post running the command.
 # Usage: run_with_uri <repo> <backend> <uri> <cmd>
 #   <repo> is the relative path to the repo to run the command in.
 #   <backend> is the original ref storage of the repo.
 #   <uri> is the new URI to be set for the ref storage.
 #   <cmd> is the git subcommand to be run in the repository.
+#   <via> if 'config', set the backend via the 'extensions.refStorage' config.
+#         if 'env', set the backend via the 'GIT_REFERENCE_BACKEND' env.
 run_with_uri () {
 	repo=$1 &&
 	backend=$2 &&
 	uri=$3 &&
 	cmd=$4 &&
+	via=$5 &&
 
-	git -C "$repo" config set core.repositoryformatversion 1
-	git -C "$repo" config set extensions.refStorage "$uri" &&
-	git -C "$repo" $cmd &&
-	git -C "$repo" config set extensions.refStorage "$backend"
+	git -C "$repo" config set core.repositoryformatversion 1 &&
+	if test "$via" = "env"
+	then
+		test_env GIT_REFERENCE_BACKEND="$uri" git -C "$repo" $cmd
+	elif test "$via" = "config"
+	then
+		git -C "$repo" config set extensions.refStorage "$uri" &&
+		git -C "$repo" $cmd &&
+		git -C "$repo" config set extensions.refStorage "$backend"
+	fi
 }
 
 # Test a repository with a given reference storage by running and comparing
 # 'git refs list' before and after setting the new reference backend. If
 # err_msg is set, expect the command to fail and grep for the provided err_msg.
 # Usage: run_with_uri <repo> <backend> <uri> <cmd>
 #   <repo> is the relative path to the repo to run the command in.
 #   <backend> is the original ref storage of the repo.
 #   <uri> is the new URI to be set for the ref storage.
+#   <via> if 'config', set the backend via the 'extensions.refStorage' config.
+#         if 'env', set the backend via the 'GIT_REFERENCE_BACKEND' env.
 #   <err_msg> (optional) if set, check if 'git-refs(1)' failed with the provided msg.
 test_refs_backend () {
 	repo=$1 &&
 	backend=$2 &&
 	uri=$3 &&
-	err_msg=$4 &&
+	via=$4 &&
+	err_msg=$5 &&
+
 
-	git -C "$repo" config set core.repositoryformatversion 1 &&
 	if test -n "$err_msg";
 	then
-		git -C "$repo" config set extensions.refStorage "$uri" &&
-		test_must_fail git -C "$repo" refs list 2>err &&
-		test_grep "$err_msg" err
+		if test "$via" = "env"
+		then
+			test_env GIT_REFERENCE_BACKEND="$uri" test_must_fail git -C "$repo" refs list 2>err
+		elif test "$via" = "config"
+		then
+			git -C "$repo" config set extensions.refStorage "$uri" &&
+			test_must_fail git -C "$repo" refs list 2>err &&
+			test_grep "$err_msg" err
+		fi
 	else
 		git -C "$repo" refs list >expect &&
-		run_with_uri "$repo" "$backend" "$uri" "refs list" >actual &&
+		run_with_uri "$repo" "$backend" "$uri" "refs list" "$via">actual &&
 		test_cmp expect actual
 	fi
 }
 
-test_expect_success 'URI is invalid' '
+# Verify that the expected files are present in the gitdir and the refsdir.
+# Usage: verify_files_exist <gitdir> <refdir>
+#   <gitdir> is the path for the gitdir.
+#   <refdir> is the path for the refdir.
+verify_files_exist () {
+	gitdir=$1 &&
+	refdir=$2 &&
+
+	# verify that the stubs were added to the $GITDIR.
+	echo "repository uses alternate refs storage" >expect &&
+	test_cmp expect $gitdir/refs/heads &&
+	echo "ref: refs/heads/.invalid" >expect &&
+	test_cmp expect $gitdir/HEAD
+
+	# verify that backend specific files exist.
+	case "$GIT_DEFAULT_REF_FORMAT" in
+	files)
+		test_path_is_dir $refdir/refs/heads &&
+		test_path_is_file $refdir/HEAD;;
+	reftable)
+		test_path_is_dir $refdir/reftable &&
+		test_path_is_file $refdir/reftable/tables.list;;
+	*)
+		BUG "unhandled ref format $GIT_DEFAULT_REF_FORMAT";;
+	esac
+}
+
+methods="config env"
+for method in $methods
+do
+
+test_expect_success "$method: URI is invalid" '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
-	test_refs_backend repo files "reftable@/home/reftable" \
+	test_refs_backend repo files "reftable@/home/reftable" "$method" \
 		"invalid value for ${SQ}extensions.refstorage${SQ}"
 '
 
-test_expect_success 'URI ends with colon' '
+test_expect_success "$method: URI ends with colon" '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
-	test_refs_backend repo files "reftable:" \
+	test_refs_backend repo files "reftable:" "$method" \
 		"invalid value for ${SQ}extensions.refstorage${SQ}"
 '
 
-test_expect_success 'unknown reference backend' '
+test_expect_success "$method: unknown reference backend" '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
-	test_refs_backend repo files "db://.git" \
+	test_refs_backend repo files "db://.git" "$method" \
 		"invalid value for ${SQ}extensions.refstorage${SQ}"
 '
 
 ref_formats="files reftable"
 for from_format in $ref_formats
 do
 
 for to_format in $ref_formats
@@ -81,79 +130,151 @@ do
 	then
 		continue
 	fi
 
 
 	for dir in "$(pwd)/repo/.git" "."
 	do
 
-		test_expect_success "read from $to_format backend, $dir dir" '
+		test_expect_success "$method: read from $to_format backend, $dir dir" '
 			test_when_finished "rm -rf repo" &&
 			git init --ref-format=$from_format repo &&
 			(
 				cd repo &&
 				test_commit 1 &&
 				test_commit 2 &&
 				test_commit 3 &&
 
 				git refs migrate --dry-run --ref-format=$to_format >out &&
 				BACKEND_PATH="$dir/$(sed "s/.* ${SQ}.git\/\(.*\)${SQ}/\1/" out)" &&
 				test_refs_backend . $from_format "$to_format://$BACKEND_PATH" "$method"
 			)
 		'
 
-		test_expect_success "write to $to_format backend, $dir dir" '
+		test_expect_success "$method: write to $to_format backend, $dir dir" '
 			test_when_finished "rm -rf repo" &&
 			git init --ref-format=$from_format repo &&
 			(
 				cd repo &&
 				test_commit 1 &&
 				test_commit 2 &&
 				test_commit 3 &&
 
 				git refs migrate --dry-run --ref-format=$to_format >out &&
 				BACKEND_PATH="$dir/$(sed "s/.* ${SQ}.git\/\(.*\)${SQ}/\1/" out)" &&
 
-				test_refs_backend . $from_format "$to_format://$BACKEND_PATH" &&
+				test_refs_backend . $from_format "$to_format://$BACKEND_PATH" "$method" &&
 
 				git refs list >expect &&
-				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" "tag -d 1" &&
+				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" \
+					"tag -d 1" "$method" &&
 				git refs list >actual &&
 				test_cmp expect actual &&
 
 				git refs list | grep -v "refs/tags/1" >expect &&
-				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" "refs list" >actual &&
+				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" \
+					"refs list" "$method" >actual &&
 				test_cmp expect actual
 			)
 		'
 
-		test_expect_success "with worktree and $to_format backend, $dir dir" '
+		test_expect_success "$method: with worktree and $to_format backend, $dir dir" '
 			test_when_finished "rm -rf repo wt" &&
 			git init --ref-format=$from_format repo &&
 			(
 				cd repo &&
 				test_commit 1 &&
 				test_commit 2 &&
 				test_commit 3 &&
 
 				git refs migrate --dry-run --ref-format=$to_format >out &&
 				BACKEND_PATH="$dir/$(sed "s/.* ${SQ}.git\/\(.*\)${SQ}/\1/" out)" &&
 
-				git config set core.repositoryformatversion 1 &&
-				git config set extensions.refStorage "$to_format://$BACKEND_PATH" &&
+				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" \
+					"worktree add ../wt 2" "$method" &&
 
-				git worktree add ../wt 2
-			) &&
+				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" \

[truncated]

word-diff

git diff --no-index --histogram --color=always --unified=8 --word-diff=plain data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
index 82cccb7..fd47d77 100644
--- a/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
@@ -6,73 +6,122 @@ test_description='Test reference backend URIs'

# Run a git command with the provided reference storage. Reset the backend
# post running the command.
# Usage: run_with_uri <repo> <backend> <uri> <cmd>
#   <repo> is the relative path to the repo to run the command in.
#   <backend> is the original ref storage of the repo.
#   <uri> is the new URI to be set for the ref storage.
#   <cmd> is the git subcommand to be run in the repository.
{+#   <via> if 'config', set the backend via the 'extensions.refStorage' config.+}
{+#         if 'env', set the backend via the 'GIT_REFERENCE_BACKEND' env.+}
run_with_uri () {
	repo=$1 &&
	backend=$2 &&
	uri=$3 &&
	cmd=$4 &&
	{+via=$5 &&+}

	git -C "$repo" config set core.repositoryformatversion 1 {+&&+}
{+	if test "$via" = "env"+}
{+	then+}
{+		test_env GIT_REFERENCE_BACKEND="$uri" git -C "$repo" $cmd+}
{+	elif test "$via" = "config"+}
{+	then+}
		git -C "$repo" config set extensions.refStorage "$uri" &&
		git -C "$repo" $cmd &&
		git -C "$repo" config set extensions.refStorage "$backend"
	{+fi+}
}

# Test a repository with a given reference storage by running and comparing
# 'git refs list' before and after setting the new reference backend. If
# err_msg is set, expect the command to fail and grep for the provided err_msg.
# Usage: run_with_uri <repo> <backend> <uri> <cmd>
#   <repo> is the relative path to the repo to run the command in.
#   <backend> is the original ref storage of the repo.
#   <uri> is the new URI to be set for the ref storage.
{+#   <via> if 'config', set the backend via the 'extensions.refStorage' config.+}
{+#         if 'env', set the backend via the 'GIT_REFERENCE_BACKEND' env.+}
#   <err_msg> (optional) if set, check if 'git-refs(1)' failed with the provided msg.
test_refs_backend () {
	repo=$1 &&
	backend=$2 &&
	uri=$3 &&
	[-err_msg=$4-]{+via=$4 &&+}
{+	err_msg=$5+} &&


[-	git -C "$repo" config set core.repositoryformatversion 1 &&-]
	if test -n "$err_msg";
	then
		{+if test "$via" = "env"+}
{+		then+}
{+			test_env GIT_REFERENCE_BACKEND="$uri" test_must_fail git -C "$repo" refs list 2>err+}
{+		elif test "$via" = "config"+}
{+		then+}
			git -C "$repo" config set extensions.refStorage "$uri" &&
			test_must_fail git -C "$repo" refs list 2>err &&
			test_grep "$err_msg" err
		{+fi+}
	else
		git -C "$repo" refs list >expect &&
		run_with_uri "$repo" "$backend" "$uri" "refs list" [->actual-]{+"$via">actual+} &&
		test_cmp expect actual
	fi
}

{+# Verify that the expected files are present in the gitdir and the refsdir.+}
{+# Usage: verify_files_exist <gitdir> <refdir>+}
{+#   <gitdir> is the path for the gitdir.+}
{+#   <refdir> is the path for the refdir.+}
{+verify_files_exist () {+}
{+	gitdir=$1 &&+}
{+	refdir=$2 &&+}

{+	# verify that the stubs were added to the $GITDIR.+}
{+	echo "repository uses alternate refs storage" >expect &&+}
{+	test_cmp expect $gitdir/refs/heads &&+}
{+	echo "ref: refs/heads/.invalid" >expect &&+}
{+	test_cmp expect $gitdir/HEAD+}

{+	# verify that backend specific files exist.+}
{+	case "$GIT_DEFAULT_REF_FORMAT" in+}
{+	files)+}
{+		test_path_is_dir $refdir/refs/heads &&+}
{+		test_path_is_file $refdir/HEAD;;+}
{+	reftable)+}
{+		test_path_is_dir $refdir/reftable &&+}
{+		test_path_is_file $refdir/reftable/tables.list;;+}
{+	*)+}
{+		BUG "unhandled ref format $GIT_DEFAULT_REF_FORMAT";;+}
{+	esac+}
{+}+}

{+methods="config env"+}
{+for method in $methods+}
{+do+}

test_expect_success [-'URI-]{+"$method: URI+} is [-invalid'-]{+invalid"+} '
	test_when_finished "rm -rf repo" &&
	git init repo &&
	test_refs_backend repo files "reftable@/home/reftable" {+"$method"+} \
		"invalid value for ${SQ}extensions.refstorage${SQ}"
'

test_expect_success [-'URI-]{+"$method: URI+} ends with [-colon'-]{+colon"+} '
	test_when_finished "rm -rf repo" &&
	git init repo &&
	test_refs_backend repo files "reftable:" {+"$method"+} \
		"invalid value for ${SQ}extensions.refstorage${SQ}"
'

test_expect_success [-'unknown-]{+"$method: unknown+} reference [-backend'-]{+backend"+} '
	test_when_finished "rm -rf repo" &&
	git init repo &&
	test_refs_backend repo files "db://.git" {+"$method"+} \
		"invalid value for ${SQ}extensions.refstorage${SQ}"
'

ref_formats="files reftable"
for from_format in $ref_formats
do

for to_format in $ref_formats
@@ -81,79 +130,151 @@ do
	then
		continue
	fi


	for dir in "$(pwd)/repo/.git" "."
	do

		test_expect_success [-"read-]{+"$method: read+} from $to_format backend, $dir dir" '
			test_when_finished "rm -rf repo" &&
			git init --ref-format=$from_format repo &&
			(
				cd repo &&
				test_commit 1 &&
				test_commit 2 &&
				test_commit 3 &&

				git refs migrate --dry-run --ref-format=$to_format >out &&
				BACKEND_PATH="$dir/$(sed "s/.* ${SQ}.git\/\(.*\)${SQ}/\1/" out)" &&
				test_refs_backend . $from_format "$to_format://$BACKEND_PATH" "$method"
			)
		'

		test_expect_success [-"write-]{+"$method: write+} to $to_format backend, $dir dir" '
			test_when_finished "rm -rf repo" &&
			git init --ref-format=$from_format repo &&
			(
				cd repo &&
				test_commit 1 &&
				test_commit 2 &&
				test_commit 3 &&

				git refs migrate --dry-run --ref-format=$to_format >out &&
				BACKEND_PATH="$dir/$(sed "s/.* ${SQ}.git\/\(.*\)${SQ}/\1/" out)" &&

				test_refs_backend . $from_format "$to_format://$BACKEND_PATH" {+"$method"+} &&

				git refs list >expect &&
				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" {+\+}
					"tag -d 1" {+"$method"+} &&
				git refs list >actual &&
				test_cmp expect actual &&

				git refs list | grep -v "refs/tags/1" >expect &&
				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" {+\+}
					"refs list" {+"$method"+} >actual &&
				test_cmp expect actual
			)
		'

		test_expect_success [-"with-]{+"$method: with+} worktree and $to_format backend, $dir dir" '
			test_when_finished "rm -rf repo wt" &&
			git init --ref-format=$from_format repo &&
			(
				cd repo &&
				test_commit 1 &&
				test_commit 2 &&
				test_commit 3 &&

				git refs migrate --dry-run --ref-format=$to_format >out &&
				BACKEND_PATH="$dir/$(sed "s/.* ${SQ}.git\/\(.*\)${SQ}/\1/" out)" &&

				[-git config set core.repositoryformatversion 1 &&-]
[-				git config set extensions.refStorage-]{+run_with_uri . "$from_format"+} "$to_format://$BACKEND_PATH" {+\+}
{+					"worktree add ../wt 2" "$method"+} &&

				[-git worktree add-]{+run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" \+}
{+					"for-each-ref --include-root-refs" "$method" >actual &&+}
{+				run_with_uri+} ../wt [-2-]
[-			)-]{+"$from_format" "$to_format://$BACKEND_PATH" \+}
{+					"for-each-ref --include-root-refs" "$method" >expect &&+}
{+				! test_cmp expect actual+} &&

				[-git -C repo for-each-ref --include-root-refs >expect &&-]
[-			git -C wt for-each-ref --include-root-refs >expect &&-]
[-			! test_cmp expect actual-]{+run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" \+}
{+					"rev-parse 2" "$method" >actual+} &&
				[-git -C wt rev-parse 2-]{+run_with_uri ../wt "$from_format" "$to_format://$BACKEND_PATH" \+}
{+					"rev-parse HEAD" "$method"+} >expect &&[-git -C wt rev-parse HEAD >actual &&-]
				test_cmp expect actual
			{+)+}
		'
	done # closes dir

	{+test_expect_success "migrating repository to $to_format with alternate refs directory" '+}
{+		test_when_finished "rm -rf repo refdir" &&+}
{+		mkdir refdir &&+}
{+		GIT_REFERENCE_BACKEND="${from_format}://$(pwd)/refdir" git init repo &&+}
{+		(+}
{+			cd repo &&+}


[truncated]

color-moved

git diff --no-index --histogram --color=always --unified=8 --color-moved=blocks data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
index 82cccb7..fd47d77 100644
--- a/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
@@ -6,73 +6,122 @@ test_description='Test reference backend URIs'
 
 # Run a git command with the provided reference storage. Reset the backend
 # post running the command.
 # Usage: run_with_uri <repo> <backend> <uri> <cmd>
 #   <repo> is the relative path to the repo to run the command in.
 #   <backend> is the original ref storage of the repo.
 #   <uri> is the new URI to be set for the ref storage.
 #   <cmd> is the git subcommand to be run in the repository.
+#   <via> if 'config', set the backend via the 'extensions.refStorage' config.
+#         if 'env', set the backend via the 'GIT_REFERENCE_BACKEND' env.
 run_with_uri () {
 	repo=$1 &&
 	backend=$2 &&
 	uri=$3 &&
 	cmd=$4 &&
+	via=$5 &&
 
-	git -C "$repo" config set core.repositoryformatversion 1
-	git -C "$repo" config set extensions.refStorage "$uri" &&
-	git -C "$repo" $cmd &&
-	git -C "$repo" config set extensions.refStorage "$backend"
+	git -C "$repo" config set core.repositoryformatversion 1 &&
+	if test "$via" = "env"
+	then
+		test_env GIT_REFERENCE_BACKEND="$uri" git -C "$repo" $cmd
+	elif test "$via" = "config"
+	then
+		git -C "$repo" config set extensions.refStorage "$uri" &&
+		git -C "$repo" $cmd &&
+		git -C "$repo" config set extensions.refStorage "$backend"
+	fi
 }
 
 # Test a repository with a given reference storage by running and comparing
 # 'git refs list' before and after setting the new reference backend. If
 # err_msg is set, expect the command to fail and grep for the provided err_msg.
 # Usage: run_with_uri <repo> <backend> <uri> <cmd>
 #   <repo> is the relative path to the repo to run the command in.
 #   <backend> is the original ref storage of the repo.
 #   <uri> is the new URI to be set for the ref storage.
+#   <via> if 'config', set the backend via the 'extensions.refStorage' config.
+#         if 'env', set the backend via the 'GIT_REFERENCE_BACKEND' env.
 #   <err_msg> (optional) if set, check if 'git-refs(1)' failed with the provided msg.
 test_refs_backend () {
 	repo=$1 &&
 	backend=$2 &&
 	uri=$3 &&
-	err_msg=$4 &&
+	via=$4 &&
+	err_msg=$5 &&
+
 
-	git -C "$repo" config set core.repositoryformatversion 1 &&
 	if test -n "$err_msg";
 	then
-		git -C "$repo" config set extensions.refStorage "$uri" &&
-		test_must_fail git -C "$repo" refs list 2>err &&
-		test_grep "$err_msg" err
+		if test "$via" = "env"
+		then
+			test_env GIT_REFERENCE_BACKEND="$uri" test_must_fail git -C "$repo" refs list 2>err
+		elif test "$via" = "config"
+		then
+			git -C "$repo" config set extensions.refStorage "$uri" &&
+			test_must_fail git -C "$repo" refs list 2>err &&
+			test_grep "$err_msg" err
+		fi
 	else
 		git -C "$repo" refs list >expect &&
-		run_with_uri "$repo" "$backend" "$uri" "refs list" >actual &&
+		run_with_uri "$repo" "$backend" "$uri" "refs list" "$via">actual &&
 		test_cmp expect actual
 	fi
 }
 
-test_expect_success 'URI is invalid' '
+# Verify that the expected files are present in the gitdir and the refsdir.
+# Usage: verify_files_exist <gitdir> <refdir>
+#   <gitdir> is the path for the gitdir.
+#   <refdir> is the path for the refdir.
+verify_files_exist () {
+	gitdir=$1 &&
+	refdir=$2 &&
+
+	# verify that the stubs were added to the $GITDIR.
+	echo "repository uses alternate refs storage" >expect &&
+	test_cmp expect $gitdir/refs/heads &&
+	echo "ref: refs/heads/.invalid" >expect &&
+	test_cmp expect $gitdir/HEAD
+
+	# verify that backend specific files exist.
+	case "$GIT_DEFAULT_REF_FORMAT" in
+	files)
+		test_path_is_dir $refdir/refs/heads &&
+		test_path_is_file $refdir/HEAD;;
+	reftable)
+		test_path_is_dir $refdir/reftable &&
+		test_path_is_file $refdir/reftable/tables.list;;
+	*)
+		BUG "unhandled ref format $GIT_DEFAULT_REF_FORMAT";;
+	esac
+}
+
+methods="config env"
+for method in $methods
+do
+
+test_expect_success "$method: URI is invalid" '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
-	test_refs_backend repo files "reftable@/home/reftable" \
+	test_refs_backend repo files "reftable@/home/reftable" "$method" \
 		"invalid value for ${SQ}extensions.refstorage${SQ}"
 '
 
-test_expect_success 'URI ends with colon' '
+test_expect_success "$method: URI ends with colon" '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
-	test_refs_backend repo files "reftable:" \
+	test_refs_backend repo files "reftable:" "$method" \
 		"invalid value for ${SQ}extensions.refstorage${SQ}"
 '
 
-test_expect_success 'unknown reference backend' '
+test_expect_success "$method: unknown reference backend" '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
-	test_refs_backend repo files "db://.git" \
+	test_refs_backend repo files "db://.git" "$method" \
 		"invalid value for ${SQ}extensions.refstorage${SQ}"
 '
 
 ref_formats="files reftable"
 for from_format in $ref_formats
 do
 
 for to_format in $ref_formats
@@ -81,79 +130,151 @@ do
 	then
 		continue
 	fi
 
 
 	for dir in "$(pwd)/repo/.git" "."
 	do
 
-		test_expect_success "read from $to_format backend, $dir dir" '
+		test_expect_success "$method: read from $to_format backend, $dir dir" '
 			test_when_finished "rm -rf repo" &&
 			git init --ref-format=$from_format repo &&
 			(
 				cd repo &&
 				test_commit 1 &&
 				test_commit 2 &&
 				test_commit 3 &&
 
 				git refs migrate --dry-run --ref-format=$to_format >out &&
 				BACKEND_PATH="$dir/$(sed "s/.* ${SQ}.git\/\(.*\)${SQ}/\1/" out)" &&
 				test_refs_backend . $from_format "$to_format://$BACKEND_PATH" "$method"
 			)
 		'
 
-		test_expect_success "write to $to_format backend, $dir dir" '
+		test_expect_success "$method: write to $to_format backend, $dir dir" '
 			test_when_finished "rm -rf repo" &&
 			git init --ref-format=$from_format repo &&
 			(
 				cd repo &&
 				test_commit 1 &&
 				test_commit 2 &&
 				test_commit 3 &&
 
 				git refs migrate --dry-run --ref-format=$to_format >out &&
 				BACKEND_PATH="$dir/$(sed "s/.* ${SQ}.git\/\(.*\)${SQ}/\1/" out)" &&
 
-				test_refs_backend . $from_format "$to_format://$BACKEND_PATH" &&
+				test_refs_backend . $from_format "$to_format://$BACKEND_PATH" "$method" &&
 
 				git refs list >expect &&
-				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" "tag -d 1" &&
+				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" \
+					"tag -d 1" "$method" &&
 				git refs list >actual &&
 				test_cmp expect actual &&
 
 				git refs list | grep -v "refs/tags/1" >expect &&
-				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" "refs list" >actual &&
+				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" \
+					"refs list" "$method" >actual &&
 				test_cmp expect actual
 			)
 		'
 
-		test_expect_success "with worktree and $to_format backend, $dir dir" '
+		test_expect_success "$method: with worktree and $to_format backend, $dir dir" '
 			test_when_finished "rm -rf repo wt" &&
 			git init --ref-format=$from_format repo &&
 			(
 				cd repo &&
 				test_commit 1 &&
 				test_commit 2 &&
 				test_commit 3 &&
 
 				git refs migrate --dry-run --ref-format=$to_format >out &&
 				BACKEND_PATH="$dir/$(sed "s/.* ${SQ}.git\/\(.*\)${SQ}/\1/" out)" &&
 
-				git config set core.repositoryformatversion 1 &&
-				git config set extensions.refStorage "$to_format://$BACKEND_PATH" &&
+				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" \
+					"worktree add ../wt 2" "$method" &&
 
-				git worktree add ../wt 2
-			) &&
+				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" \

[truncated]

word-diff-align

git diff --no-index --histogram --color=always --unified=8 --word-diff-align data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
diff --git a/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh b/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
index 82cccb7..fd47d77 100644
--- a/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/old.sh
+++ b/data/experiments/server_expand_1/git_pairs/git/53592d68e868__t__t1423-ref-backend.sh/new.sh
@@ -6,73 +6,122 @@ test_description='Test reference backend URIs'
 
 # Run a git command with the provided reference storage. Reset the backend
 # post running the command.
 # Usage: run_with_uri <repo> <backend> <uri> <cmd>
 #   <repo> is the relative path to the repo to run the command in.
 #   <backend> is the original ref storage of the repo.
 #   <uri> is the new URI to be set for the ref storage.
 #   <cmd> is the git subcommand to be run in the repository.
+#   <via> if 'config', set the backend via the 'extensions.refStorage' config.
+#         if 'env', set the backend via the 'GIT_REFERENCE_BACKEND' env.
 run_with_uri () {
 	repo=$1 &&
 	backend=$2 &&
 	uri=$3 &&
 	cmd=$4 &&
+{+	via+}=${+5 +}&&        # aligned 32->15 edited
 
-[-	-]git -C "$repo"[- config set core.repositoryformatversion 1-]        # aligned 14->20 edited
-[-	-]git -C "$repo" config set extensions.refStorage "$uri" &&        # aligned 15->23 edited
-[-	-]git -C "$repo" $cmd &&        # aligned 16->24 edited
-[-	-]git -C "$repo" config set extensions.refStorage "$backend"        # aligned 17->25 edited
+	git -C "$repo" config set core.repositoryformatversion 1 &&        # aligned 34->17 unchanged
+	if test "$via" = "env"
+	then
+{+		test_env GIT_REFERENCE_BACKEND="$uri" +}git -C "$repo"{+ $cmd+}        # aligned 14->20 edited
+	elif test "$via" = "config"
+	then
+{+		+}git -C "$repo" config set extensions.refStorage "$uri" &&        # aligned 15->23 edited
+{+		+}git -C "$repo" $cmd &&        # aligned 16->24 edited
+{+		+}git -C "$repo" config set extensions.refStorage "$backend"        # aligned 17->25 edited
+	fi
 }
 
 # Test a repository with a given reference storage by running and comparing
 # 'git refs list' before and after setting the new reference backend. If
 # err_msg is set, expect the command to fail and grep for the provided err_msg.
 # Usage: run_with_uri <repo> <backend> <uri> <cmd>
 #   <repo> is the relative path to the repo to run the command in.
 #   <backend> is the original ref storage of the repo.
 #   <uri> is the new URI to be set for the ref storage.
+#   <via> if 'config', set the backend via the 'extensions.refStorage' config.
+#         if 'env', set the backend via the 'GIT_REFERENCE_BACKEND' env.
 #   <err_msg> (optional) if set, check if 'git-refs(1)' failed with the provided msg.
 test_refs_backend () {
 	repo=$1 &&
 	backend=$2 &&
 	uri=$3 &&
-[-	err_msg-]=$[-4 -]&&        # aligned 32->15 edited
+	via=$4 &&
+	err_msg=$5 &&
+
 
-	git -C "$repo" config set core.repositoryformatversion 1 &&        # aligned 34->17 unchanged
 	if test -n "$err_msg";
 	then
-[-		-]git -C "$repo" config set extensions.refStorage "$uri" &&        # aligned 37->54 edited
-[-		-]test_must_fail git -C "$repo" refs list 2>err &&        # aligned 38->55 edited
-[-		-]test_grep "$err_msg" err        # aligned 39->56 edited
+		if test "$via" = "env"
+		then
+			test_env GIT_REFERENCE_BACKEND="$uri" test_must_fail git -C "$repo" refs list 2>err
+		elif test "$via" = "config"
+		then
+{+			+}git -C "$repo" config set extensions.refStorage "$uri" &&        # aligned 37->54 edited
+{+			+}test_must_fail git -C "$repo" refs list 2>err &&        # aligned 38->55 edited
+{+			+}test_grep "$err_msg" err        # aligned 39->56 edited
+		fi
 	else
 		git -C "$repo" refs list >expect &&
-		run_with_uri "$repo" "$backend" "$uri" "refs list"[- -]>actual &&        # aligned 42->60 edited
+		run_with_uri "$repo" "$backend" "$uri" "refs list"{+ "$via"+}>actual &&        # aligned 42->60 edited
 		test_cmp expect actual
 	fi
 }
 
-test_expect_success[- '-]URI is invalid'[- '-]        # aligned 47->96 edited
+# Verify that the expected files are present in the gitdir and the refsdir.
+# Usage: verify_files_exist <gitdir> <refdir>
+#   <gitdir> is the path for the gitdir.
+#   <refdir> is the path for the refdir.
+verify_files_exist () {
+	gitdir=$1 &&
+	refdir=$2 &&
+
+	# verify that the stubs were added to the $GITDIR.
+	echo "repository uses alternate refs storage" >expect &&
+	test_cmp expect $gitdir/refs/heads &&
+	echo "ref: refs/heads/.invalid" >expect &&
+	test_cmp expect $gitdir/HEAD
+
+	# verify that backend specific files exist.
+	case "$GIT_DEFAULT_REF_FORMAT" in
+	files)
+		test_path_is_dir $refdir/refs/heads &&
+		test_path_is_file $refdir/HEAD;;
+	reftable)
+		test_path_is_dir $refdir/reftable &&
+		test_path_is_file $refdir/reftable/tables.list;;
+	*)
+		BUG "unhandled ref format $GIT_DEFAULT_REF_FORMAT";;
+	esac
+}
+
+methods="config env"
+for method in $methods
+do
+
+test_expect_success{+ "$method: +}URI is invalid{+" +}'        # aligned 47->96 edited
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
-	test_refs_backend repo files "reftable@/home/reftable"[- -]\        # aligned 50->99 edited
+	test_refs_backend repo files "reftable@/home/reftable"{+ "$method" +}\        # aligned 50->99 edited
 		"invalid value for ${SQ}extensions.refstorage${SQ}"
 '
 
-test_expect_success[- '-]URI ends with colon'[- '-]        # aligned 54->103 edited
+test_expect_success{+ "$method: +}URI ends with colon{+" +}'        # aligned 54->103 edited
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
-	test_refs_backend repo files "reftable:"[- -]\        # aligned 57->106 edited
+	test_refs_backend repo files "reftable:"{+ "$method" +}\        # aligned 57->106 edited
 		"invalid value for ${SQ}extensions.refstorage${SQ}"
 '
 
-test_expect_success[- '-]unknown reference backend'[- '-]        # aligned 61->110 edited
+test_expect_success{+ "$method: +}unknown reference backend{+" +}'        # aligned 61->110 edited
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
-	test_refs_backend repo files "db://.git"[- -]\        # aligned 64->113 edited
+	test_refs_backend repo files "db://.git"{+ "$method" +}\        # aligned 64->113 edited
 		"invalid value for ${SQ}extensions.refstorage${SQ}"
 '
 
 ref_formats="files reftable"
 for from_format in $ref_formats
 do
 
 for to_format in $ref_formats
@@ -81,79 +130,151 @@ do
 	then
 		continue
 	fi
 
 
 	for dir in "$(pwd)/repo/.git" "."
 	do
 
-		test_expect_success "read from $to_format backend, $dir dir" '        # aligned 8->8 edited
+		test_expect_success "{+$method: +}read from $to_format backend, $dir dir" '        # aligned 8->8 edited
 			test_when_finished "rm -rf repo" &&
 			git init --ref-format=$from_format repo &&
 			(
 				cd repo &&
 				test_commit 1 &&
 				test_commit 2 &&
 				test_commit 3 &&
 
 				git refs migrate --dry-run --ref-format=$to_format >out &&
 				BACKEND_PATH="$dir/$(sed "s/.* ${SQ}.git\/\(.*\)${SQ}/\1/" out)" &&
 				test_refs_backend . $from_format "$to_format://$BACKEND_PATH" "$method"
 			)
 		'
 
-		test_expect_success "write to $to_format backend, $dir dir" '        # aligned 23->23 edited
+		test_expect_success "{+$method: +}write to $to_format backend, $dir dir" '        # aligned 23->23 edited
 			test_when_finished "rm -rf repo" &&
 			git init --ref-format=$from_format repo &&
 			(
 				cd repo &&
 				test_commit 1 &&
 				test_commit 2 &&
 				test_commit 3 &&
 
 				git refs migrate --dry-run --ref-format=$to_format >out &&
 				BACKEND_PATH="$dir/$(sed "s/.* ${SQ}.git\/\(.*\)${SQ}/\1/" out)" &&
 
-				test_refs_backend . $from_format "$to_format://$BACKEND_PATH"[- -]&&        # aligned 35->35 edited
+				test_refs_backend . $from_format "$to_format://$BACKEND_PATH"{+ "$method" +}&&        # aligned 35->35 edited
 
 				git refs list >expect &&
-				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH"[- "tag -d 1" &&-]        # aligned 38->38 edited
+				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH"{+ \+}        # aligned 38->38 edited
+					"tag -d 1" "$method" &&
 				git refs list >actual &&
 				test_cmp expect actual &&
 
 				git refs list | grep -v "refs/tags/1" >expect &&
-				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH"[- "refs list" >actual &&-]        # aligned 43->44 edited
+				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH"{+ \+}        # aligned 43->44 edited
+					"refs list" "$method" >actual &&
 				test_cmp expect actual
 			)
 		'
 
-		test_expect_success "with worktree and $to_format backend, $dir dir" '        # aligned 48->50 edited
+		test_expect_success "{+$method: +}with worktree and $to_format backend, $dir dir" '        # aligned 48->50 edited
 			test_when_finished "rm -rf repo wt" &&
 			git init --ref-format=$from_format repo &&
 			(
 				cd repo &&
 				test_commit 1 &&
 				test_commit 2 &&
 				test_commit 3 &&
 
 				git refs migrate --dry-run --ref-format=$to_format >out &&
 				BACKEND_PATH="$dir/$(sed "s/.* ${SQ}.git\/\(.*\)${SQ}/\1/" out)" &&
 
-				git config set core.repositoryformatversion 1 &&
-[-				git config set extensions-].[-refStorage -]"$to_format://$BACKEND_PATH"[- &&-]        # aligned 61->62 edited
+{+				run_with_uri +}.{+ +}"${+from_format" "$+}to_format://$BACKEND_PATH"{+ \+}        # aligned 61->62 edited
+{+					"+}worktree add ../wt 2{+" "$method" &&+}        # aligned 63->63 edited
 
-[-				git -]worktree add ../wt 2        # aligned 63->63 edited
-[-			) -]&&        # aligned 64->143 edited
+				run_with_uri . "$from_format" "$to_format://$BACKEND_PATH" \

[truncated]