{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:34:03",
  "duplicates" : [ {
    "blockSize" : 19,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/integrationTests/kotlin/UseCase4Test.kt",
        "extension" : "kt",
        "linesOfCode" : 238,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 197,
      "startLine" : 136,
      "endLine" : 161,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "src/integrationTests/kotlin/UseCase5Test.kt",
        "extension" : "kt",
        "linesOfCode" : 177,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 147,
      "startLine" : 157,
      "endLine" : 179,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/DropCirclePanel.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 14,
      "endLine" : 29,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/StopToEditCirclePanel.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 12,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/CollapseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 41,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/ViewDiffAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/PickAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/FixupAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/PickAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/AddBranchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 43,
      "endLine" : 54,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/CollapseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 41,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/ViewDiffAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/FixupAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/CollapseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 41,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/PickAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/CollapseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 41,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/ViewDiffAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/CollapseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 41,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/PickAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/FixupAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/AddBranchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 43,
      "endLine" : 54,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/FixupAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/CollapseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 41,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/FixupAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/AddBranchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 43,
      "endLine" : 54,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/ViewDiffAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/ViewDiffAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/PickAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/ViewDiffAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/FixupAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/AddBranchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 43,
      "endLine" : 54,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/AddBranchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 43,
      "endLine" : 54,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/AddBranchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 43,
      "endLine" : 54,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/PickAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/BranchPanel.kt",
        "extension" : "kt",
        "linesOfCode" : 186,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 157,
      "startLine" : 184,
      "endLine" : 192,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/GraphPanel.kt",
        "extension" : "kt",
        "linesOfCode" : 298,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 239,
      "startLine" : 395,
      "endLine" : 403,
      "cleanedStartLine" : 223,
      "cleanedEndLine" : 231
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/integrationTests/kotlin/IRGitPlatformTest.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 100,
      "startLine" : 157,
      "endLine" : 168,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "src/integrationTests/kotlin/UseCase4Test.kt",
        "extension" : "kt",
        "linesOfCode" : 238,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 197,
      "startLine" : 94,
      "endLine" : 104,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/CherryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/AddBranchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 47,
      "endLine" : 54,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/DropAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/CherryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/SquashAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/AddBranchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 47,
      "endLine" : 54,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/SquashAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/RebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/SquashAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/StopToEditAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/CherryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/ViewDiffAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/DropAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/ViewDiffAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/SquashAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/ViewDiffAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/RebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/RebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/SquashAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/DropAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/CollapseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/CherryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/FixupAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/CollapseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/StopToEditAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/SquashAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/PickAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/SquashAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/CollapseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/DropAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/FixupAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/RebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/FixupAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/StopToEditAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/AddBranchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 47,
      "endLine" : 54,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/StopToEditAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/CollapseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/RebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/StopToEditAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/AddBranchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 47,
      "endLine" : 54,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/CherryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/CollapseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/DropAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/DropAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/PickAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/SquashAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/SquashAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/DropAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/RebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/PickAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/StopToEditAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/DropAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/FixupAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/RebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/StopToEditAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/CherryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/RebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/AddBranchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 47,
      "endLine" : 54,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/StopToEditAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/ViewDiffAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/StopToEditAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/PickAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/CherryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/FixupAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/CherryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/DropAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/CherryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/PickAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/DropAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/StopToEditAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/FixupAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/SquashAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/DropAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/SquashAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/RebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/AddBranchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 47,
      "endLine" : 54,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/RebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/DropAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/StopToEditAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/ViewDiffAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/CherryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/CherryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/StopToEditAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/PickAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/RebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/CherryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/RebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/CollapseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/gitPanel/SquashAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/changePanel/ViewDiffAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/listeners/CircleHoverListener.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 140,
      "endLine" : 149,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/listeners/CircleHoverListener.kt",
        "extension" : "kt",
        "linesOfCode" : 140,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 171,
      "endLine" : 180,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/dataClasses/commands/RebaseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 16,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 9,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/dataClasses/commands/ReorderCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 16,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 11,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/utils/ProjectUtils.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 9,
      "endLine" : 16,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/utils/ProjectUtils.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/integrationTests/kotlin/UseCase4Test.kt",
        "extension" : "kt",
        "linesOfCode" : 238,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 197,
      "startLine" : 120,
      "endLine" : 127,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "src/integrationTests/kotlin/UseCase5Test.kt",
        "extension" : "kt",
        "linesOfCode" : 177,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 147,
      "startLine" : 141,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/GraphPanel.kt",
        "extension" : "kt",
        "linesOfCode" : 298,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 239,
      "startLine" : 55,
      "endLine" : 61,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/GraphPanel.kt",
        "extension" : "kt",
        "linesOfCode" : 298,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 239,
      "startLine" : 362,
      "endLine" : 368,
      "cleanedStartLine" : 198,
      "cleanedEndLine" : 204
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/AbortRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 16,
      "endLine" : 24,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/actions/buttonActions/ContinueRebaseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 15,
      "endLine" : 23,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/integrationTests/kotlin/UseCase3Test.kt",
        "extension" : "kt",
        "linesOfCode" : 105,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 124,
      "endLine" : 130,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "src/integrationTests/kotlin/UseCase5Test.kt",
        "extension" : "kt",
        "linesOfCode" : 177,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 147,
      "startLine" : 85,
      "endLine" : 91,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/DropCirclePanel.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 14,
      "endLine" : 19,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/SquashedCirclePanel.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/SquashedCirclePanel.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/StopToEditCirclePanel.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 12,
      "endLine" : 17,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/dataClasses/commands/CherryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 15,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 8,
      "startLine" : 19,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/dataClasses/commands/RebaseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 16,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 18,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/Palette.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/Palette.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 111,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/CirclePanel.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 187,
      "endLine" : 192,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/DropCirclePanel.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/CirclePanel.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 66,
      "endLine" : 77,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/visuals/SquashedCirclePanel.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/integrationTests/kotlin/UseCase4Test.kt",
        "extension" : "kt",
        "linesOfCode" : 238,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 197,
      "startLine" : 310,
      "endLine" : 315,
      "cleanedStartLine" : 191,
      "cleanedEndLine" : 196
    }, {
      "file" : {
        "relativePath" : "src/integrationTests/kotlin/UseCase5Test.kt",
        "extension" : "kt",
        "linesOfCode" : 177,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 147,
      "startLine" : 235,
      "endLine" : 240,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 142
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/dataClasses/commands/CherryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 15,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 8,
      "startLine" : 19,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/dataClasses/commands/ReorderCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 16,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 19,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/listeners/CherryDragAndDropListener.kt",
        "extension" : "kt",
        "linesOfCode" : 382,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 309,
      "startLine" : 182,
      "endLine" : 187,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 116
    }, {
      "file" : {
        "relativePath" : "src/main/kotlin/com/jetbrains/interactiveRebase/listeners/CherryDragAndDropListener.kt",
        "extension" : "kt",
        "linesOfCode" : 382,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 309,
      "startLine" : 324,
      "endLine" : 329,
      "cleanedStartLine" : 214,
      "cleanedEndLine" : 219
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/integrationTests/kotlin/UseCase4Test.kt",
        "extension" : "kt",
        "linesOfCode" : 238,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 197,
      "startLine" : 286,
      "endLine" : 291,
      "cleanedStartLine" : 174,
      "cleanedEndLine" : 179
    }, {
      "file" : {
        "relativePath" : "src/integrationTests/kotlin/UseCase5Test.kt",
        "extension" : "kt",
        "linesOfCode" : 177,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 147,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    } ]
  } ],
  "overallDuplication" : null
}