(List
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('test_description', {[SQ <LIT_CHARS "test git fast-import of notes objects">]})])
  (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]}  )
  (Com {[LIT_CHARS test_tick]}  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/heads/master\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "first commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline foo\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file foo in first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 755 inline bar\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file bar in first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline baz/xyzzy\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file baz/xyzzy in first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "commit refs/heads/master\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "second commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline foo\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file foo in second commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 755 inline baz/xyzzy\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file baz/xyzzy in second commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "commit refs/heads/master\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "third commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline foo\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file foo in third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "commit refs/heads/master\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "fourth commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 755 inline bar\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file bar in fourth commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "set up master branch">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tgit whatchanged master\n">]}  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('commit4', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS refs/heads/master]})]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('commit3', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[DQ [VarSub commit4][LIT_CHARS "^"]]})]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('commit2', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[DQ [VarSub commit4][LIT_CHARS "~2"]]})]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('commit1', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[DQ [VarSub commit4][LIT_CHARS "~3"]]})]})])
  (Com {[LIT_CHARS test_tick]}  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/test\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "first notes commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline "][VarSub commit1][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "first note for first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 755 inline "][VarSub commit2][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "first note for second commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "    fourth commit\n"][LIT_CHARS "    third commit\n"][LIT_CHARS "    second commit\n"][LIT_CHARS "    first note for second commit\n"][LIT_CHARS "    first commit\n"][LIT_CHARS "    first note for first commit\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "add notes with simple M command">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/test git log | grep \"^    \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS test_tick]}  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "feature notes\n"][LIT_CHARS "commit refs/notes/test\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "second notes commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "from refs/notes/test^0\n"][LIT_CHARS "N inline "][VarSub commit3][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "first note for third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit4][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "first note for fourth commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "    fourth commit\n"][LIT_CHARS "    first note for fourth commit\n"][LIT_CHARS "    third commit\n"][LIT_CHARS "    first note for third commit\n"][LIT_CHARS "    second commit\n"][LIT_CHARS "    first note for second commit\n"][LIT_CHARS "    first commit\n"][LIT_CHARS "    first note for first commit\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "add notes with simple N command">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/test git log | grep \"^    \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS test_tick]}  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/test\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "third notes commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "from refs/notes/test^0\n"][LIT_CHARS "N inline "][VarSub commit1][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "second note for first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit2][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "second note for second commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit3][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "second note for third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit4][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "second note for fourth commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "    fourth commit\n"][LIT_CHARS "    second note for fourth commit\n"][LIT_CHARS "    third commit\n"][LIT_CHARS "    second note for third commit\n"][LIT_CHARS "    second commit\n"][LIT_CHARS "    second note for second commit\n"][LIT_CHARS "    first commit\n"][LIT_CHARS "    second note for first commit\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "update existing notes with N command">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/test git log | grep \"^    \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS test_tick]}  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/test\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "fourth notes commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "from refs/notes/test^0\n"][LIT_CHARS "M 644 inline "][ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub commit3]]}) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "s|^..|&/|"]]}) )][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "prefix of note for third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline "][ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub commit4]]}) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "s|^..|&/|"]]}) )][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "prefix of note for fourth commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline "][ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub commit4]]}) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "s|^"][\ LIT_ESCAPED_CHAR "\\("][LIT_CHARS ..][\ LIT_ESCAPED_CHAR "\\)"][\ LIT_ESCAPED_CHAR "\\("][LIT_CHARS ..][\ LIT_ESCAPED_CHAR "\\)"][LIT_CHARS "|"][\ LIT_ESCAPED_CHAR "\\1"][LIT_CHARS /][\ LIT_ESCAPED_CHAR "\\2"][LIT_CHARS "/|"]]}) )][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "pre-prefix of note for fourth commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit1][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "third note for first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit2][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "third note for second commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit3][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "third note for third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit4][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "third note for fourth commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('whitespace', {[DQ [LIT_CHARS "    "]]})])
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "    fourth commit\n"][LIT_CHARS "    pre-prefix of note for fourth commit\n"][VarSub whitespace][LIT_CHARS "\n"][LIT_CHARS "    prefix of note for fourth commit\n"][VarSub whitespace][LIT_CHARS "\n"][LIT_CHARS "    third note for fourth commit\n"][LIT_CHARS "    third commit\n"][LIT_CHARS "    prefix of note for third commit\n"][VarSub whitespace][LIT_CHARS "\n"][LIT_CHARS "    third note for third commit\n"][LIT_CHARS "    second commit\n"][LIT_CHARS "    third note for second commit\n"][LIT_CHARS "    first commit\n"][LIT_CHARS "    third note for first commit\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "add concatentation notes with M command">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/test git log | grep \"^    \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS test_tick]}  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/test\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "fifth notes commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "from refs/notes/test^0\n"][LIT_CHARS "deleteall\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "    fourth commit\n"][LIT_CHARS "    third commit\n"][LIT_CHARS "    second commit\n"][LIT_CHARS "    first commit\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that deleteall also removes notes">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/test git log | grep \"^    \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS test_tick]}  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/test\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "sixth notes commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "from refs/notes/test^0\n"][LIT_CHARS "M 644 inline "][VarSub commit1][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "third note for first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline "][VarSub commit3][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "third note for third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit1][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "fourth note for first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit3][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "fourth note for third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "    fourth commit\n"][LIT_CHARS "    third commit\n"][LIT_CHARS "    fourth note for third commit\n"][LIT_CHARS "    second commit\n"][LIT_CHARS "    first commit\n"][LIT_CHARS "    fourth note for first commit\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that later N commands override earlier M commands">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/test git log | grep \"^    \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]}  )
  (FunctionDef fast_import_commits []
    (List
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_ref', {[VarSub 1]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_num_commits', {[VarSub 2]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_append_to_file', {[VarSub 3]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_i', {[LIT_CHARS 0]})])
      (While
        (Com {[LIT_CHARS test]} {[VarSub my_i]} {[LIT_CHARS -lt]} {[VarSub my_num_commits]}        )
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_i', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub my_i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})])
          (Com {[LIT_CHARS test_tick]}          )
          (Com {[LIT_CHARS cat]}
            <
            (FilenameRedirectNode filename={[DQ [VarSub my_append_to_file]]} <REDIR_DGREAT ">>"> 1),
            (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit "][VarSub my_ref][LIT_CHARS "\n"][LIT_CHARS "mark :"][VarSub my_i][LIT_CHARS "\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "commit #"][VarSub my_i][LIT_CHARS "\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline file\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file contents in commit #"][VarSub my_i][LIT_CHARS "\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
            >
          )
        )
      )
    )
  )
  (FunctionDef fast_import_notes []
    (List
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_notes_ref', {[VarSub 1]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_num_commits', {[VarSub 2]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_append_to_file', {[VarSub 3]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_note_append', {[VarSub 4]})])
      (Com {[LIT_CHARS test_tick]}      )
      (Com {[LIT_CHARS cat]}
        <
        (FilenameRedirectNode filename={[DQ [VarSub my_append_to_file]]} <REDIR_DGREAT ">>"> 1),
        (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit "][VarSub my_notes_ref][LIT_CHARS "\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "committing "][VarSub my_num_commits][LIT_CHARS " notes\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
        >
      )
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_i', {[LIT_CHARS 0]})])
      (While
        (Com {[LIT_CHARS test]} {[VarSub my_i]} {[LIT_CHARS -lt]} {[VarSub my_num_commits]}        )
        (List
          (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_i', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub my_i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})])
          (Com {[LIT_CHARS cat]}
            <
            (FilenameRedirectNode filename={[DQ [VarSub my_append_to_file]]} <REDIR_DGREAT ">>"> 1),
            (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "N inline :"][VarSub my_i][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "note for commit #"][VarSub my_i][VarSub my_note_append][LIT_CHARS "\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
            >
          )
        )
      )
    )
  )
  (Com {[LIT_CHARS rm]} {[LIT_CHARS input]} {[LIT_CHARS expect]}  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('num_commits', {[LIT_CHARS 400]})])
  (Com {[LIT_CHARS fast_import_commits]} {[DQ [LIT_CHARS refs/heads/many_commits]]} {[VarSub num_commits]} {[LIT_CHARS input]}  )
  (Com {[LIT_CHARS fast_import_notes]} {[DQ [LIT_CHARS refs/notes/many_notes]]} {[VarSub num_commits]} {[LIT_CHARS input]}  )
  (Com {[LIT_CHARS test_tick]}  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_DGREAT ">>"> 1),
    (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/many_notes\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "committing some non-notes to the notes tree\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 755 inline foobar/non-note.txt\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "This is not a note, but rather a regular file residing in a notes tree\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline deadbeef\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "Non-note file\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline de/adbeef\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "Another non-note file\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[VarSub num_commits]})])
  (While
    (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]}    )
    (List
      (Com {[LIT_CHARS cat]}
        <
        (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_DGREAT ">>"> 1),
        (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "    commit #"][VarSub i][LIT_CHARS "\n"][LIT_CHARS "    note for commit #"][VarSub i][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
        >
      )
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})])
    )
  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "add lots of commits and notes">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/many_notes git log refs/heads/many_commits |\n"> <LIT_CHARS "\t    grep \"^    \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that lots of notes trigger a fanout scheme">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\t# None of the entries in the top-level notes tree should be a full SHA1\n"> <LIT_CHARS "\tgit ls-tree --name-only refs/notes/many_notes |\n"> <LIT_CHARS "\twhile read path\n"> <LIT_CHARS "\tdo\n"> <LIT_CHARS "\t\tif test $(expr length \"$path\") -ge 40\n"> <LIT_CHARS "\t\tthen\n"> <LIT_CHARS "\t\t\treturn 1\n"> <LIT_CHARS "\t\tfi\n"> <LIT_CHARS "\tdone\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS expect_non-note1]} <REDIR_DGREAT ">>"> 1),
    (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "This is not a note, but rather a regular file residing in a notes tree\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS expect_non-note2]} <REDIR_DGREAT ">>"> 1),
    (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Non-note file\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS expect_non-note3]} <REDIR_DGREAT ">>"> 1),
    (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Another non-note file\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that non-notes are untouched by a fanout change">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit cat-file -p refs/notes/many_notes:foobar/non-note.txt > actual &&\n"> <LIT_CHARS "\ttest_cmp expect_non-note1 actual &&\n"> <LIT_CHARS "\tgit cat-file -p refs/notes/many_notes:deadbeef > actual &&\n"> <LIT_CHARS "\ttest_cmp expect_non-note2 actual &&\n"> <LIT_CHARS "\tgit cat-file -p refs/notes/many_notes:de/adbeef > actual &&\n"> <LIT_CHARS "\ttest_cmp expect_non-note3 actual\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS test_tick]}  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/many_notes\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "changing notes for the top three commits\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "from refs/notes/many_notes^0\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (Com {[LIT_CHARS rm]} {[LIT_CHARS expect]}  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[VarSub num_commits]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('j', {[LIT_CHARS 0]})])
  (While
    (Com {[LIT_CHARS test]} {[VarSub j]} {[LIT_CHARS -lt]} {[LIT_CHARS 3]}    )
    (List
      (Com {[LIT_CHARS cat]}
        <
        (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_DGREAT ">>"> 1),
        (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "N inline refs/heads/many_commits~"][VarSub j][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "changed note for commit #"][VarSub i][LIT_CHARS "\n"][LIT_CHARS "EOF\n"]]} <REDIR_DLESS "<<"> 0),
        >
      )
      (Com {[LIT_CHARS cat]}
        <
        (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_DGREAT ">>"> 1),
        (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "    commit #"][VarSub i][LIT_CHARS "\n"][LIT_CHARS "    changed note for commit #"][VarSub i][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
        >
      )
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})])
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('j', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub j]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})])
    )
  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "change a few existing notes">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/many_notes git log -n3 refs/heads/many_commits |\n"> <LIT_CHARS "\t    grep \"^    \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that changing notes respect existing fanout">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\t# None of the entries in the top-level notes tree should be a full SHA1\n"> <LIT_CHARS "\tgit ls-tree --name-only refs/notes/many_notes |\n"> <LIT_CHARS "\twhile read path\n"> <LIT_CHARS "\tdo\n"> <LIT_CHARS "\t\tif test $(expr length \"$path\") -ge 40\n"> <LIT_CHARS "\t\tthen\n"> <LIT_CHARS "\t\t\treturn 1\n"> <LIT_CHARS "\t\tfi\n"> <LIT_CHARS "\tdone\n"> <LIT_CHARS "\n">]}  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('remaining_notes', {[LIT_CHARS 10]})])
  (Com {[LIT_CHARS test_tick]}  )
  (Com {[LIT_CHARS cat]}
    <
    (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1),
    (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/many_notes\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "removing all notes but "][VarSub remaining_notes][LIT_CHARS "\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "from refs/notes/many_notes^0\n"]]} <REDIR_DLESS "<<"> 0),
    >
  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub num_commits]}} {A Atom NODE_ARITH_WORD {[VarSub remaining_notes]}}}]})])
  (For sha1 [{[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS -n]} {[VarSub i]} {[LIT_CHARS refs/heads/many_commits]})]}])
    (Com {[LIT_CHARS cat]}
      <
      (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_DGREAT ">>"> 1),
      (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "N 0000000000000000000000000000000000000000 "][VarSub sha1][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
      >
    )
  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[VarSub num_commits]})])
  (Com {[LIT_CHARS rm]} {[LIT_CHARS expect]}  )
  (While
    (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]}    )
    (List
      (Com {[LIT_CHARS cat]}
        <
        (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_DGREAT ">>"> 1),
        (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "    commit #"][VarSub i][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
        >
      )
      (If
        (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -le]} {[VarSub remaining_notes]}        )
        (Com {[LIT_CHARS cat]}
          <
          (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_DGREAT ">>"> 1),
          (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "    note for commit #"][VarSub i][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
          >
        )
      )
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})])
    )
  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "remove lots of notes">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/many_notes git log refs/heads/many_commits |\n"> <LIT_CHARS "\t    grep \"^    \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that removing notes trigger fanout consolidation">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\t# All entries in the top-level notes tree should be a full SHA1\n"> <LIT_CHARS "\tgit ls-tree --name-only -r refs/notes/many_notes |\n"> <LIT_CHARS "\twhile read path\n"> <LIT_CHARS "\tdo\n"> <LIT_CHARS "\t\t# Explicitly ignore the non-note paths\n"> <LIT_CHARS "\t\ttest \"$path\" = \"foobar/non-note.txt\" && continue\n"> <LIT_CHARS "\t\ttest \"$path\" = \"deadbeef\" && continue\n"> <LIT_CHARS "\t\ttest \"$path\" = \"de/adbeef\" && continue\n"> <LIT_CHARS "\n"> <LIT_CHARS "\t\tif test $(expr length \"$path\") -ne 40\n"> <LIT_CHARS "\t\tthen\n"> <LIT_CHARS "\t\t\treturn 1\n"> <LIT_CHARS "\t\tfi\n"> <LIT_CHARS "\tdone\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that non-notes are untouched by a fanout change">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit cat-file -p refs/notes/many_notes:foobar/non-note.txt > actual &&\n"> <LIT_CHARS "\ttest_cmp expect_non-note1 actual &&\n"> <LIT_CHARS "\tgit cat-file -p refs/notes/many_notes:deadbeef > actual &&\n"> <LIT_CHARS "\ttest_cmp expect_non-note2 actual &&\n"> <LIT_CHARS "\tgit cat-file -p refs/notes/many_notes:de/adbeef > actual &&\n"> <LIT_CHARS "\ttest_cmp expect_non-note3 actual\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS rm]} {[LIT_CHARS input]} {[LIT_CHARS expect]}  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('num_notes_refs', {[LIT_CHARS 10]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('num_commits', {[LIT_CHARS 16]})])
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('some_commits', {[LIT_CHARS 8]})])
  (Com {[LIT_CHARS fast_import_commits]} {[DQ [LIT_CHARS refs/heads/more_commits]]} {[VarSub num_commits]} {[LIT_CHARS input]}  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[LIT_CHARS 0]})])
  (While
    (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -lt]} {[VarSub num_notes_refs]}    )
    (List
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})])
      (Com {[LIT_CHARS fast_import_notes]} {[DQ [LIT_CHARS refs/notes/more_notes_][VarSub i]]} {[VarSub num_commits]} {[LIT_CHARS input]}      )
    )
  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[LIT_CHARS 0]})])
  (While
    (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -lt]} {[VarSub num_notes_refs]}    )
    (List
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})])
      (Com {[LIT_CHARS fast_import_notes]} {[DQ [LIT_CHARS refs/notes/more_notes_][VarSub i]]} {[VarSub some_commits]} {[LIT_CHARS input]} {[DQ [LIT_CHARS " (2)"]]}      )
    )
  )
  (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[VarSub num_commits]})])
  (While
    (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]}    )
    (List
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('note_data', {[DQ [LIT_CHARS "note for commit #"][VarSub i]]})])
      (If
        (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -le]} {[VarSub some_commits]}        )
        (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('note_data', {[DQ [VarSub note_data][LIT_CHARS " (2)"]]})])
      )
      (Com {[LIT_CHARS cat]}
        <
        (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_DGREAT ">>"> 1),
        (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS "    commit #"][VarSub i][LIT_CHARS "\n"][LIT_CHARS "    "][VarSub note_data][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0),
        >
      )
      (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})])
    )
  )
  (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "add notes to "][VarSub num_commits][LIT_CHARS " commits in each of "][VarSub num_notes_refs][LIT_CHARS " refs"]]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import --active-branches=5 <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/more_notes_1 git log refs/heads/more_commits |\n"> <LIT_CHARS "\t    grep \"^    \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]}  )
  (Com {[LIT_CHARS test_done]}  )
)