{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 16:40:31",
  "duplicates" : [ {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/psi/IpnbPyFunction.java",
        "extension" : "java",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/psi/IpnbPyTargetExpression.java",
        "extension" : "java",
        "linesOfCode" : 36,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/panels/IpnbEditablePanel.java",
        "extension" : "java",
        "linesOfCode" : 269,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 190,
      "startLine" : 75,
      "endLine" : 90,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/panels/IpnbMarkdownPanel.java",
        "extension" : "java",
        "linesOfCode" : 61,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 46,
      "endLine" : 61,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/code.ipynb",
        "extension" : "ipynb",
        "linesOfCode" : 25,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 1,
      "endLine" : 12,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "testData/outputs.ipynb",
        "extension" : "ipynb",
        "linesOfCode" : 34,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 1,
      "endLine" : 12,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/markdown.ipynb",
        "extension" : "ipynb",
        "linesOfCode" : 21,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 1,
      "endLine" : 11,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "testData/outputs.ipynb",
        "extension" : "ipynb",
        "linesOfCode" : 34,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 1,
      "endLine" : 11,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testData/code.ipynb",
        "extension" : "ipynb",
        "linesOfCode" : 25,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 1,
      "endLine" : 11,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "testData/markdown.ipynb",
        "extension" : "ipynb",
        "linesOfCode" : 21,
        "components" : [ "primary::testData" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 1,
      "endLine" : 11,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testSrc/org/jetbrains/plugins/ipnb/JsonParserTest.java",
        "extension" : "java",
        "linesOfCode" : 79,
        "components" : [ "primary::testSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 52,
      "endLine" : 59,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "testSrc/org/jetbrains/plugins/ipnb/JsonParserTest.java",
        "extension" : "java",
        "linesOfCode" : 79,
        "components" : [ "primary::testSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 72,
      "endLine" : 79,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testSrc/org/jetbrains/plugins/ipnb/WebSocketConnectionTest.java",
        "extension" : "java",
        "linesOfCode" : 110,
        "components" : [ "primary::testSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "testSrc/org/jetbrains/plugins/ipnb/WebSocketConnectionTest.java",
        "extension" : "java",
        "linesOfCode" : 110,
        "components" : [ "primary::testSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 94,
      "endLine" : 101,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbMoveCellDownAction.java",
        "extension" : "java",
        "linesOfCode" : 35,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbMoveCellUpAction.java",
        "extension" : "java",
        "linesOfCode" : 35,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbMergeCellAboveAction.java",
        "extension" : "java",
        "linesOfCode" : 33,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbMergeCellBelowAction.java",
        "extension" : "java",
        "linesOfCode" : 33,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbMergeCellBelowAction.java",
        "extension" : "java",
        "linesOfCode" : 33,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbSplitCellAction.java",
        "extension" : "java",
        "linesOfCode" : 27,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbCodeCellAction.java",
        "extension" : "java",
        "linesOfCode" : 39,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbMarkdownCellAction.java",
        "extension" : "java",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/configuration/IpnbConnectionManager.java",
        "extension" : "java",
        "linesOfCode" : 410,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 282,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/configuration/IpnbConnectionManager.java",
        "extension" : "java",
        "linesOfCode" : 410,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 282,
      "startLine" : 433,
      "endLine" : 438,
      "cleanedStartLine" : 277,
      "cleanedEndLine" : 282
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testSrc/org/jetbrains/plugins/ipnb/JsonParserTest.java",
        "extension" : "java",
        "linesOfCode" : 79,
        "components" : [ "primary::testSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "testSrc/org/jetbrains/plugins/ipnb/JsonParserTest.java",
        "extension" : "java",
        "linesOfCode" : 79,
        "components" : [ "primary::testSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/format/cells/IpnbEditableCell.java",
        "extension" : "java",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/format/cells/output/IpnbOutputCell.java",
        "extension" : "java",
        "linesOfCode" : 49,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbHeadingCellActionBase.java",
        "extension" : "java",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbMarkdownCellAction.java",
        "extension" : "java",
        "linesOfCode" : 40,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/psi/IpnbPyReference.java",
        "extension" : "java",
        "linesOfCode" : 78,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/psi/IpnbSearchExecutor.java",
        "extension" : "java",
        "linesOfCode" : 51,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbMergeCellAboveAction.java",
        "extension" : "java",
        "linesOfCode" : 33,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbMergeCellBelowAction.java",
        "extension" : "java",
        "linesOfCode" : 33,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbCodeCellAction.java",
        "extension" : "java",
        "linesOfCode" : 39,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbHeadingCellActionBase.java",
        "extension" : "java",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/psi/IpnbPyReference.java",
        "extension" : "java",
        "linesOfCode" : 78,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 38,
      "endLine" : 44,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/psi/IpnbUnresolvedReferenceSkipper.java",
        "extension" : "java",
        "linesOfCode" : 63,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/psi/IpnbPyReference.java",
        "extension" : "java",
        "linesOfCode" : 78,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/psi/IpnbPyReference.java",
        "extension" : "java",
        "linesOfCode" : 78,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 69,
      "endLine" : 74,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbMergeCellAboveAction.java",
        "extension" : "java",
        "linesOfCode" : 33,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/editor/actions/IpnbSplitCellAction.java",
        "extension" : "java",
        "linesOfCode" : 27,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/psi/IpnbSearchExecutor.java",
        "extension" : "java",
        "linesOfCode" : 51,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "src/org/jetbrains/plugins/ipnb/psi/IpnbUnresolvedReferenceSkipper.java",
        "extension" : "java",
        "linesOfCode" : 63,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "testSrc/org/jetbrains/plugins/ipnb/JsonParserTest.java",
        "extension" : "java",
        "linesOfCode" : 79,
        "components" : [ "primary::testSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "testSrc/org/jetbrains/plugins/ipnb/JsonParserTest.java",
        "extension" : "java",
        "linesOfCode" : 79,
        "components" : [ "primary::testSrc" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 72,
      "endLine" : 77,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    } ]
  } ],
  "overallDuplication" : null
}